最近のプロセス最大数
sleep sortを「常識を覆すソートアルゴリズム!その名も”sleep sort”! – Islands in the byte stream」で知ったのが切っ掛けでふと、プロセス最大数は幾つだっけとか思ったので調べてみたメモ。
ちなみにDebian環境。
これulimitで簡単に分かります。
max user processesってのがそれで、どうもunlimitedなのでメモリが許す限り起動できそう。
ちなみに、manすると分かりますが、ulimitは実はbashの内部コマンドです。
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
これプログラム的にどうやっているかと言えば、getlimit(2)を使用しているはず。
#include <stdio.h> #include <sys/time.h> #include <sys/resource.h> int main(void) { int ret; struct rlimit rlim; ret = getrlimit(RLIMIT_NPROC, &rlim); if (ret < 0) { return 1; } if (rlim.rlim_cur == RLIM_INFINITY) { printf("soft:nolimit\n"); } else { printf("soft:%d\n", rlim.rlim_cur); } if (rlim.rlim_max == RLIM_INFINITY) { printf("hard:nolimit\n"); } else { printf("hard:%d\n", rlim.rlim_max); } return 0; }
$ ./hoge soft:nolimit hard:nolimit
昔は設定されてた覚えがあるんだどなぁ。
最近は設定されていない項目が多い。
そういえば、かなり昔にcoreがデフォルトで作られなくなってビックリした記憶がある。