2009-12-04 5 views
0

Эта команда получает некоторые данные из MySQL и затем манипулирует им. Почему «реальное» время намного выше, чем «пользовательское» время?Неверный вывод из времени

>time ./command.rb 

real 45m45.457s 
user 3m36.478s 
sys  0m28.226s 

Для разъяснения - Я понимаю разницу между реальным, пользовательским и sys-выходом. Однако я смущен тем, почему существует такая большая разница. Машина, на которой я запускаю эту операцию, практически ничего не использует CPU, и у меня нет нити в моей команде. Все, что он делает, это выборка данных. Может ли быть причиной такого пробела сложный оператор MySQL?

ответ

2

пользователь и sys сообщают, сколько времени процессор занят. ЦП не будет занят, если он заблокирован ничем, например, сетевым или дисковым вводом/выводом. Попробуйте, например, «time sleep 1», или «time dd if =/dev/zero of =/dev/null bs = 1024 count = 1000000», чтобы увидеть различия. Первые просто блоки, вторая будет включать в себя много использования ЦП.

+0

Таким образом, сетевой трафик может стать причиной этого? Если запрос занимает 200 мс от конца до конца, любая идея, какая часть может быть ЦП? – Justin

+1

Сетевой трафик не очень интенсивен. Если вы используете интерфейс loopback (например, чтобы поговорить с SQL-сервером на локальном хосте), это скорее всего будет связано с большим количеством CPU, чем с привязкой ввода/вывода, но в противном случае использование ЦП, связанное с сетевым соединением, вероятно, будет минимален. Кроме того, вы измеряете только использование ЦП вашего сценария. Сервер SQL будет использовать некоторое время процессора (и диск ввода-вывода), пытаясь ответить на ваш запрос, и вы не видите этого в своих измерениях. –

2

Система проводит большую часть своего времени, ожидая, пока диски вращаются и направляются в поисках.

Время «пользователь» - это время, затраченное на то, что CPU хватает цифры.

1

«Реальное» время - это количество фактических часов настенных часов, прошедших, где «пользователь» и «sys» - это количество процессорного времени, используемого для вашей работы в каждом классе обработки. Чтобы «реальное» время было намного выше, ваша работа, вероятно, потратила много времени на ожидание ресурсов или спать.

1

Просто предположите, но если вы просматриваете результаты по подключению ssh, возможно, большая часть вашего времени ждет, когда процессор зашифрует данные, которые будут отправлены на вашу удаленную консоль.

+0

Я ценю понимание! Я зашел в систему через ssh, но пропустил локальный экран gnu, чтобы накладные расходы не включались в вывод 'time'. – Justin

Смежные вопросы