Эта команда получает некоторые данные из MySQL и затем манипулирует им. Почему "реальное" время намного выше, чем "пользовательское" время?
>time ./command.rb
real 45m45.457s
user 3m36.478s
sys 0m28.226s
Для пояснения - я понимаю разницу между реальным, пользовательским и sys-выходом. Однако я смущен тем, почему существует такая большая разница. Машина, на которой я запускаю эту операцию, практически ничего не использует CPU, и у меня нет нити в моей команде. Все, что он делает, это выборка данных. Может ли быть причиной такого пробела сложный оператор MySQL?
пользователь и sys сообщают, сколько времени процессор занят. ЦП не будет занят, если он заблокирован ничем, например, сетевым или дисковым вводом/выводом. Попробуйте, например, "time sleep 1", или "time dd if =/dev/zero of =/dev/null bs = 1024 count = 1000000", чтобы увидеть различия. Первые просто блоки, второй будет включать в себя много использования процессора.
Система проводит большую часть своего времени, ожидая, когда диски начнут вращаться и начнут искать.
"Пользовательское" время - это время, затраченное на то, что процессоры могут хрустеть для вас.
"Реальное" время - это количество фактического времени настенных часов, которое прошло, где времена "пользователь" и "sys" - это количество процессорного времени, используемого для вашей работы в каждом классе обработки. Чтобы "реальное" время было намного выше, ваша работа, вероятно, потратила много времени на ожидание ресурсов или спать.
Просто догадайтесь, но если вы просматриваете результаты по ssh-соединению, возможно, большая часть вашего времени ждет, когда процессор зашифрует данные, которые будут отправлены на вашу удаленную консоль.
time
.