Я недавно наблюдаю пару эпизодов Systm на Revision3, который показал методы для потребностей питания.
Первое создает 48-часовой UPS с помощью автомобильных батарей. Взломанный UPS
Второе забавно, но в то же время показывает то, что могло быть сделано с человеческой силой. Человек привел в действие колесо хомяка
Объедините питание с маршрутизатором Wi-Fi, и Вы находитесь в бизнесе. Для доступа в Интернет существует несколько маршрутизаторов Wi-Fi, которые могут соединиться через Ретрансляционные станции.
Если у Вас есть телефон Windows Mobile с высокой скоростью и Wi-Fi, можно использовать WMWifiRouter для создания LAN.
Я думаю, что Вы неправильно понимаете способ, которым Linux сообщает об использовании памяти. Когда процесс разветвляется, он приводит к второму процессу, который совместно использует много ресурсов с исходным процессом. Включенный в это память. Однако Linux использует технику, известную как Копия на записи (COW) для этого. То, что это означает, - то, что каждый разветвленный дочерний процесс будет видеть те же данные в памяти как исходный процесс, но каждый раз, когда те данные изменяются (ребенком или родителем), изменения копируются и только затем указывают на новое местоположение.
, Пока один из процессов не вносит изменения в те данные, они совместно используют ту же копию. В результате у меня мог быть процесс, который использует 100 МБ RAM, и разветвите ее 10 раз. Каждый из тех разветвленных процессов показал бы 100 МБ используемой RAM, но если бы Вы посмотрели на полное использование памяти на поле, то это могло бы только показать, что 130 МБ RAM используются (100 МБ, совместно использованных процессами, плюс некоторые МБ издержек, плюс еще дюжина МБ или два для остальной части системы).
Как заключительный пример, у меня есть поле прямо сейчас с 30 апачскими выполнениями процессов. Каждый процесс показывает использование 22 МБ RAM. Однако, когда я работаю свободный-m для показа моего полного Использования оперативной памяти, я добираюсь:
topher@crucible:/tmp$ free -m
total used free shared buffers cached
Mem: 349 310 39 0 24 73
-/+ buffers/cache: 212 136
Swap: 511 51 460
, Как Вы видите, это поле даже не имеет достаточного количества RAM для выполнения 30 процессов, которые каждый использовали 18 МБ "реальной" RAM. Если у Вас буквально не заканчивается RAM, или Ваши приложения подкачивают в большой степени, я не волновался бы о вещах.
ОБНОВЛЕНИЕ: Кроме того, проверьте этот инструмент, названный smem, упомянутый jldugger в ответе на другой вопрос на использовании памяти Linux здесь .
Используя sa-компиляция Вы смогли улучшать скорость соответствия многих правил.
Вот то, что я сделал.
у меня есть установка, где много сообщений имеет тенденцию быть переданным примерно одновременно; для ряда экспериментов я выполняю SA на сообщениях, которые копируются во временную шпульку и затем поставляются заданием крона каждые пять минут.
spamd
продолжил бы печатать, "возможно, необходимо увеличить параметр макс. детей", и у меня был он, повысил до 40 однажды, но у меня был сервер, использующий всю его область подкачки и катастрофический отказ.
Теперь я реализовал другой режим, где доставкой управляет файл блокировки Procmail. Поскольку было просто сделать, я просто использую последнюю цифру идентификатора процесса и работаю с 10 детьми. Я нисколько не уверен, что это оптимально, но это уже помогло избежать безумных пиков загрузки я, wouled время от времени испытывают.
LINEBUF=10240
# Grab last digit of PID for lockfile
PID=$
:0
* PID ?? ()\/[0-9]$
{ D=$MATCH }
:0
* > 512000
{ SA="(too large)" }
:0Ew:/tmp/20spamc.$D
SA=| spamc -p 38783 -l -y
, Кроме того, я запускаю spamd
со многими ulimit
ограничения. Числа были вынуты из http://svn.apache.org/repos/asf/spamassassin/trunk/contrib/run-masses кроме, я удалил ulimit -u
ограничение. (Не уверенный, что продолжается. 32 является слишком маленьким в любом случае. С чем-то как 500 я мог сохранить spamd
выполнение некоторое время, но в конечном счете столкновение с пределом.)
ulimit -v 204800
ulimit -m 204800
ulimit -n 256
#ulimit -u 32
perl -T -I lib -w spamd --min-children 2 --max-children 10 --max-spare 5 etc etc
я предполагаю, что закончу с ошибками отправки, если загрузка будет слишком высока в течение расширенного времени, но до сих пор, кажется, что мне удалось уменьшить загрузку в управляемые уровни с этим; и набор неудавшихся доставок еще намного лучше, чем машина, исчерпывающая подкачку.
Высокие средние числа загрузки являются (иногда) косвенным признаком, что Ваша машина исчерпывает RAM (и использует много процессов свопинга ЦП назад и вперед от виртуальной памяти), таким образом, Вы могли попытаться настроить свой почтовый сервер для не передачи почты через SpamAssassin, если средние числа загрузки слишком высоки.
Вы не упоминаете, который MTA Вы выполняете, но если Вы называете SA из списка управления доступом в exim4, затем предложение у основания , это сообщение является эффективным.
кроме того, можно уменьшить нагрузку на SA и таким образом уменьшить его использование памяти, путем помещения некоторого другого, меньшего количества ресурсоемких методов фильтрации спама перед ним (т.е. таким образом, они обрабатывают и отклоняют некоторый спам, прежде чем это доберется до SA) - например, greylisting и отправитель проверяют, что выноски используют относительно мало RAM.
Мы были в аналогичной ситуации несколько месяцев назад. SpamAssassin и ClamAV использовали большую память на размещенном сервере. У нас была опция добавления большей памяти к серверу, но это оказалось более стоимостью - и эффективный при времени для переключений на Postini. YMMV.