Как зарезервировать ресурсы для процесса?

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

listasitem
Сообщения: 144
ОС: Debian Lenny 5

Как зарезервировать ресурсы для процесса?

Сообщение listasitem »

На сервере работают Apache, MySQL, Exim и PHP. Кроме них - большая и толстая программа, отрабатывающая большие неравномерные и не стабильные потоки данных.
Как зарезервировать дисковое пространство, память и процессорный ресурс для первых? Как можно автоматически "притормаживать" второе?

Откуда, кроме load system average в proc можно получить данные о текущей загрузке системы? Надо динамически программно принимать решения о принятии новых процессов на обработку или помещении их в очередь.

И, кстати, в чем именно измеряется load system average - что за единицы? На одном сервере увидел двузначные числа, на другом - от 0,1 до 2, на форуме приводят трехзначные...
Использую Debian Lenny 5 - счастлив, чего и вам искренне желаю!
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Как зарезервировать ресурсы для процесса?

Сообщение nesk »

listasitem писал(а):
30.08.2009 11:45
И, кстати, в чем именно измеряется load system average - что за единицы? На одном сервере увидел двузначные числа, на другом - от 0,1 до 2, на форуме приводят трехзначные...

Там наверно средняя длинна очереди к CPU за последнии 5, 10 и 15 минут,
а может быть средняя загрузка CPU в процентах (читайте man там должно быть написано)
listasitem писал(а):
30.08.2009 11:45
Откуда, кроме load system average в proc можно получить данные о текущей загрузке системы?

лучше всего наверно поставить пакет sysstat и использовать команду sar

listasitem писал(а):
30.08.2009 11:45
Как зарезервировать дисковое пространство

Квоты man quota; man edquota
Но они не по процессам, а по пользователям и группам.
listasitem писал(а):
30.08.2009 11:45
процессорный ресурс

В многопроцессорных системах в линукс можно объединять CPU в группы и привязывать процессы к этим группам CPU и можно перебрасывать процессоры между группами. (сейчас поищу ссылку)
Для распределение процессорного времени можно использовать nice. (man nice; man renice)

listasitem писал(а):
30.08.2009 11:45
Как зарезервировать дисковое пространство, память и процессорный ресурс для первых? Как можно автоматически "притормаживать" второе?

По хорошему, Вам нужна функциональность аналогичная FSS, PRM+WLM. Но я не знаю, есть ли реализации таких вещей под Линукс.
Мне тоже это очень интересно.
С нетерпением жду ответов.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
listasitem
Сообщения: 144
ОС: Debian Lenny 5

Re: Как зарезервировать ресурсы для процесса?

Сообщение listasitem »

Пишу очередь. Запускаю новые задачи на обработку при завершении предыдущих, ограничил кол-во потоков.
Интересно, а можно-ли сделать что-то, чтобы гарантированно "застраховать" Apache, PHP и MySQL от перегруза со стороны других программ в системе.
Использую Debian Lenny 5 - счастлив, чего и вам искренне желаю!
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Как зарезервировать ресурсы для процесса?

Сообщение nesk »

listasitem писал(а):
31.08.2009 18:50
Интересно, а можно-ли сделать что-то, чтобы гарантированно "застраховать" Apache, PHP и MySQL от перегруза со стороны других программ в системе.

Исходя из того, что я знаю о linux, максимум, что Вы можете сделать - это назначить Apache, PHP и MySQL nice = -20 (минус двадцать). Это серьезно перераспределит процессорное время в их пользу, но ничего не гарантирует.

UDP
А менее приоритетные задачи, запускайте с положительным значением nice = 19
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали: