この記事は「1分で実現できる有用な技術 Advent Calendar 2014」の5日目の記事です。 Linuxカーネルが認識している論理cpu数を数えるのは↓みたいな感じでも良いのですがプロセスが利用できる数とは違うので多少注意が必要です。これはプロセスに対してリソースの制限がかけられている場合があるからですね。 ということで、そんな時にnproc(1)です。このコマンドなら現在のプロセスで使えるcpu数を知ることができます。 では実際に動かして見てみます。 下のコードはまず何もリソース制限がない状態でnprocコマンドを実行。その後に利用可能なcpuを設定してnprocを実行しています。ここではfork前にリソース制限をしてそれが子プロセスに引き継がれています。 #define _GNU_SOURCE #include <sched.h> #include <stdio.h> #in