Я запускаю следующую команду в каталоге с ~7000
файлами:
time find . | xargs -P8 -n1 grep -F 'xxx'
Результаты:
real 0m1.638s
user 1m1.090s
sys 0m5.080s
Я очень хорошо понимаю, что (user+cpu)
может быть < or > cpuTime
, но должно выполняться следующее ограничение:
(user + sys) < real * NCPU
Где NCPU — количество логических ядер в системе. В любой момент должно быть запущено не более процессов NCPU, которым назначено либо пользовательское, либо системное время. И все же у меня 12
логических ядер (6 реальных ядер x 2 гиперпотока), но 1.638 * 12 = ~20 seconds
, тогда как мой процесс каким-то образом ухитрился потреблять больше минуты процессорного времени.
Субъективно 1.6s
в реальном времени примерно соответствует (и я пробовал это на больших каталогах).
Воздействие со значением -P изменяет сообщаемое реальное и системное время, но оно выравнивается вокруг значения где-то около 8-12
.
Обратите внимание, что ни один из файлов не содержит xxx, но результаты будут такими же, если я использую строку, которая получает несколько совпадений.
find . | wc -l
? Linux может округлять пользовательское/системное время для кратковременных процессов... - person osgx   schedule 10.03.2014uname -a
для проверки его конфигов. Если у вас кастомное ядро, загрузите конфиг вашего ядра на какой-нибудь текстовый хостинг, например pastebin (проверьте/boot/
). - person osgx   schedule 10.03.2014