Я вижу pid выше 400 000, почему это так? Означает ли это, что что-то не так?

Вы можете проверить терминал следующим образом:

> echo foo | awk '{if (system("tty >/dev/null 2>&1")) print "true"; else print "false";}'
true
13
12.02.2019, 22:39
2 ответа

Из документа proc:

On 32-bit platforms, 32768 is the maximum value for pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately 4 million).

Вы можете увидеть с помощью cat /proc/sys/kernel/pid_max. Вы также можете запросить это с помощью sysctl.

sudo sysctl -a | grep kernel.pid_max

или:

sysctl -n kernel.pid_max

Измените /etc/sysctl.conf, чтобы изменить значение навсегда, и перезагрузите с помощью sysctl -p.

16
27.01.2020, 19:52

При загрузке ядро ​​настраивает значение по умолчанию pid_maxв зависимости от количества доступных ЦП. Когда число меньше, выбирается обычное число 32768. В противном случае расчет выполняется следующим образом (, показывающим здесь, что ядро ​​3.10 похоже на RHEL, но помимо некоторых вариаций оно одинаково для любого последнего ядра Linux):

include/linux/threads.h:

/*
 * This controls the default maximum pid allocated to a process
 */
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000)

0x8000 = 32768 — обычное значение, используемое в системах с менее чем 32 доступными потоками ЦП.

и позже:

#define PIDS_PER_CPU_DEFAULT    1024

Затем эти значения используются вkernel/pid.c:

int pid_max = PID_MAX_DEFAULT;

и позже:

    /* bump default and minimum pid_max based on number of cpus */
    pid_max = min(pid_max_max, max_t(int, pid_max,
                PIDS_PER_CPU_DEFAULT * num_possible_cpus()));
    pid_max_min = max_t(int, pid_max_min,
                PIDS_PER_CPU_MIN * num_possible_cpus());
    pr_info("pid_max: default: %u minimum: %u\n", pid_max, pid_max_min);

Таким образом, из OP это должно означать, что в общей сложности 458752/1024 = 448 одновременных доступных потоков :довольно много. Другая система, вероятно, имеет не так много ЦП/ядер/потоков и т. д., поэтому имеет более низкое значение по умолчанию pid_max.

21
27.01.2020, 19:52

Теги

Похожие вопросы