Я пользуюсь несколькими службами общего хостинга и много раз удивлялся: как они вычисляют эти "секунды процессора"?

Например, один из тех, кто ограничивает меня 300 000 секунд / месяц, 10000 секунд / 24 часа и 2000 секунд / 2 часа. Но секунды могут существенно зависеть от аппаратного и программного обеспечения хостера (как: мои приложения и ОС хостера).

Поэтому я в основном уверен, что если я выполню какой-то сложный и, вероятно, плохо оптимизированный запрос SQL, который длится 10 секунд, я, вероятно, "потрачу" ровно 10 секунд процессора. Нет вопросов.

Но если я поставлю задержку в сценарии PHP (<?php sleep(10); ?>) это будет стоить мне таких же 10 процессорных секунд? Или, если я загружаю внешнюю веб-страницу и она длится 3 секунды - будет ли она в этом случае такой же?

В основном меня интересует использование процессора PHP file_get_contents() .

1 ответ1

1

Это делается планировщиком ядра: когда запланирован запуск процесса, время, за которое он выполняется, добавляется к общему итогу для этого процесса. Планировщик выбирает процесс для запуска от 100 до 1000 раз в секунду, в зависимости от ОС и конфигурации. (Это количество времени является интервалом времени.)

sleep(10) будет использовать меньше микросекунды процессорного времени, потому что это приводит к остановке процесса. Затем планировщик выберет другой процесс для запуска (или, если ни один из них не готов к запуску, процессор может бездействовать). Затем будет создан таймер для процесса, срок действия которого истекает через 10 секунд. В это время планировщик затем выберет процесс для запуска на ЦПУ в следующий доступный интервал времени.

Операции с файловым вводом / выводом также приведут к остановке процесса, пока ЦП ожидает готовности диска или сети, поэтому они также не будут использовать много времени ЦП.

Операции, которые занимают процессорное время, - это операции чтения / записи переменных, выполнения числовых математических операций, построения и сканирования строковых переменных, циклов и операторов if.

Не существует простой формулы для определения того, сколько процессорного времени будет использоваться данной программой. Это зависит от того, что именно делает программа. Типичная веб-страница, которая просто читает / записывает базу данных, не использует слишком много процессорного времени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .