Мое предположение об использовании памяти: это правильно? - PullRequest
0 голосов
/ 13 августа 2010

У меня есть скрипт, когда run использует 17 Мб памяти (записывается с помощью memory_get_peak_usage ()).

Скрипт запускается 1 миллион раз в день. Общее ежедневное потребление памяти: 17 миллионов мегабайт

86400 секунд в день.

17000000/86400 = 196,76

Предположение: выполнение этого сценария 1 миллион раз в день потребует как минимум 196,76 выделенной памяти.

Правильно ли мое предположение?

Ответы [ 4 ]

2 голосов
/ 13 августа 2010

Если скрипт выполняется 1000000 копий в то же время , то , вы получите 17 миллионов МБ, но, поскольку он освобождает память после завершения, вы не добавляете использование к общей сумме.

Вам необходимо знать, сколько копий выполняется одновременно, и умножить это число на 17 МБ. Это было бы максимальное использование памяти.

1 голос
/ 13 августа 2010

Не совсем правильно; первые сто раз ваш скрипт будет выполнен, вероятно, все будет хорошо вписываться в память; Итак, первые две минуты или около того могут идти как положено. Но после того, как вы загрузите компьютер в режим подкачки, ваш компьютер будет тратить так много времени на обработку подкачки, что следующие 999 800 выполнений могут оказаться значительно медленнее, чем вы ожидаете. И, поскольку все они начинают конкурировать за пропускную способность диска, чем дольше он будет работать, тем хуже будет.

Я также не уверен насчет использования функции php memory_get_peak_usage (); это «внутренний» вид памяти, который требуется программе, а не вид с точки зрения операционной системы. Это может быть значительно хуже. (Возможно, переводчику требуется 20 мегабайт RSS только для запуска hello-world. Возможно, нет.)

Я не уверен, что будет лучшим способом продвижения вашего приложения: возможно, это может быть один долгоживущий процесс, который обрабатывает события по мере их публикации и возвращает результаты. Это может быть в состоянии работать в значительно меньшем объеме памяти. Возможно, результаты на самом деле не меняются каждые 0,0005 секунд, и вы можете кэшировать результаты в течение одной секунды и запускать их только 86400 раз в день. Или, может быть, вам нужно купить еще несколько машин. :)

0 голосов
/ 13 августа 2010

Я не думаю, что этот расчет даст правильные результаты, потому что вы также должны учитывать другие факторы, такие как -

  1. Как долго работает скрипт
  2. Какое количество скриптов выполняется одновременно.
  3. Распределение вызова скриптов по времени.

А в ваших расчетах какой смысл делить на 86400 секунд? почему не часы или миллисекунды. Мне расчет кажется довольно бессмысленным.

0 голосов
/ 13 августа 2010

Да, но что, если он вызывается несколько раз одновременно? У вас одновременно запущено несколько потоков.

РЕДАКТИРОВАТЬ: Кроме того, почему этот сценарий выполняется миллион раз в день? (если у вас нет огромного сайта)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...