Посты

Питание сервера от DC-DC преобразователей

У меня уже был опыт сборки сервера на этой материнке (D945GCLF2). Что в тот раз, что сейчас меня напрягала одна вещь: при использовании обычного ATX блока питания материнка с жёстким диском занимают в два раза меньше места, чем блок питания. То есть, если найти способ обойтись без БП — размер компа упадёт в три раза! А ещё любой такой блок питания шумит и выделяет тепло.

На рынке существуют решения вроде Pico PSU — но, во-первых, Ebay наводнён китайскими копиями оригинального устройства, а во-вторых, он слишком дорог (напомню, я хотел обойтись деталями из своей «коробки с проводами»). Хорошее решение — давно купленные мной модули на основе LM2596 по цене 40 руб/шт. Однако, этот подход накладывает свои ограничения.

Довольно тяжело обеспечить нормальное питание компа от таких модулей – но основные рекомендации таковы:

  1. Можно отрезать многие линии в ATX-разъёме: дублирующиеся 5 и 12 вольт, а также ненужные -5 и -12.
  2. Также можно избавиться от +5VSB и PS_ON. PS_ON со стороны материнской платы нужно подключить к земле.
  3. Необходимо оставить три линии +3.3 вольта слева от защёлки (расположены с самого края разъёма). Без этого будет множество неожиданных ошибок, в основном со стороны SATA-контроллера, таких как «Read error», «error: attempt to read or write outside of disk ‘hd0’», полной невозможности обнаружения диска и подобных.
  4. Питание винчестера по +5 и +12 вольт желательно обеспечить совершенно отдельной линией, зашунтировав её конденсаторами.
  5. Питать всю систему от напряжения, большего чем 12 вольт. Хорошо подходит вариант с питанием от БП ноутбука (19В, 90Вт).

Потребление платы D945GCLF2 c винчестером HD204UI составляет 16Вт в Idle-режиме (0.2А * 3.3В + 2.8А * 5В + 0.3А * 12В), и 22Вт во время теста CPUBurn (0.2А * 3.3В + 3.2А * 5В + 0.6А * 12В).

Одна из проблем — максимальный ток, потребляемый по линии 5 вольт. Модуль на LM2596 может отдать максимум 3 ампера, а именно столько нам и надо для питания. Использовать оборудование на предельных режимах — плохая идея, но нужно попробовать. В случае неудачи можно параллелить эти модули, но обязательно нужно подогнать напряжения на модулях с точностью до сотой (причём делать это под нагрузкой хотя бы в полампера), а ещё лучше подключать их через мощный резистор сопротивлением менее одной десятой ома (короткий кусок нихромовой проволоки).

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

Информация о микросхеме LM2596 и модулях на её основе.

Мониторинг состояния сервера

Поскольку мы взяли курс на максимальную тишину и экономичность сервера, встаёт вопрос о контроле температуры и прочих параметров.

В первую очередь, нужно следить за температурой процессора и жёсткого диска. Получить информацию о процессоре нам поможет утилита sensors (sudo apt-get install lm-sensors && sudo sensors-detect && sensors). Для жёсткого диска используем hddtemp (sudo apt-get install hddtemp && hddtemp).

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

sensors | sed -n '3,1p' | awk '{print "Процессор - " $3}' > temp.data
sudo hddtemp /dev/sda | awk '{print "Винчестер - " $4}' >> temp.data

Его можно записать в cron, и иметь возможность постоянно следить за показаниями:

sudo crontab -e

в конце добавить */1 * * * * /путь к скрипту/gettemp

Тесты производительности в linux

Тестирование сетевой производительности

Утилита iperf. На одном компьютере запускается сервер (командой iperf -s), на другом — клиент (командой iperf -c ip_сервера). Есть версии и под windows, и под Linux (sudo apt-get install iperf). К сожалению, я не смог утилизировать одним клиентом более 130Мб/с, поэтому можно запускать несколько клиентов, лучше даже на нескольких машинах.

Разогрев процессора

Утилита cpuburn (sudo apt-get install cpuburn). Запускается командой burnP5 (есть версии, заточенные под разные процессоры — для Intel Atom вполне подходит версия P5). Загружает процессор на 100%, позволяет проверить эффективность охлаждения и надёжность цепей питания при пиковых нагрузках. Такие стресс-тесты нужно обязательно проводить под контролем температуры процессора и других компонентов — например, процессор может охлаждаться хорошо, а вот на цепь питания не был установлен даже маленький радиатор. Под большой нагрузкой процессор потребляет большой ток, и система питания может перегреться (её КПД не равен 100%).

Дисковый тест

sudo apt-get install hdparm

sudo hdparm -tT /dev/sda

Очевидно, что запускать их желательно, обеспечив минимум дисковой активности, и не доверять одному прогону — сделайте хотя бы три теста.

Все эти тесты очень полезно прогонять после модернизации системы питания, и перед тем как спрятать сервер на дальнюю полку.

Измерение потребления электроэнергии компьютером

Многие тесты потребления в интернете используют простое измерение тока в сети 220В на входе блока питания. Это очень просто, но сообщает совершенно неверные сведения по трём причинам:

  1. КПД блока питания далёк от 100%. Только самые дорогие БП имеют КПД выше 80%, а обычные китайские блоки вряд ли дают выше 50%.
  2. Более того, КПД блока питания сильно зависит от нагрузки. Довольно тяжело купить блок питания мощностью меньше 300Вт — значит, на нашем «зелёном» сервере он будет работать на 10% максимальной мощности. Для таких слабых нагрузок графиков КПД даже не существует, но судя по всему, эффективность работы в таком режиме меньше 50%, а значит блок питания в основном работает на свой радиатор. Как двигатель внутреннего сгорания.
<img class="alignnone" alt="Эффективность компьютерного блока питания" src="http://static.catethysis.ru/files/power_consumption.png" width="350" height="250" />   3. Блок питания &#8212; сильно нелинейная и <a target="_blank" rel="nofollow" href="/goto/http://ru.wikipedia.org/wiki/Реактивное_сопротивление"  target="_blank">реактивная</a> нагрузка. Значит, его <a target="_blank" rel="nofollow" href="/goto/http://ru.wikipedia.org/wiki/Коэффициент_мощности"  target="_blank">коэффициент мощности</a> меньше единицы, и мощность полученная умножением напряжения на ток будет больше реальной. Существуют блоки питания с <a target="_blank" rel="nofollow" href="/goto/http://ru.wikipedia.org/wiki/PFC"  target="_blank">корректором коэффициента мощности (PFC)</a>, но они редки, и выпускаются только на высокие мощности.   4. Ток блока питания обогащён гармониками, в силу самого характера выпрямления напряжения на его входе. Неясно, как учитывает эти гармоники мультиметр в режиме измерения переменного тока.

Как видим, некоторые факторы завышают измеренную мощность, некоторые, наоборот, занижают. Трудно сказать, как в итоге интерпретировать такие цифры.

Для прямого измерения мощности лучше использовать специализированные приборы — измерители мощности переменного тока, либо измерять ток на выходах блока питания компьютера (в этом случае из вычислений исключается КПД блока питания).

В таком методе измерения мощности нужно сделать следующее:

  1. Разорвать все линии +3.3В, +5В и +12В на выходе блока питания (конечно, гораздо удобнее это делать, имея удлинитель ATX);
  2. Соединить (скрутить, спаять) все линии  одинакового напряжения — как со стороны блока питания, так и со стороны материнской платы. После этого мы имеем 3 толстых скрутки +3.3В, +5В и +12В с обоих сторон (а также провода земли и 5 проводов дополнительных сигналов);
  3. Включить между одноимёнными пучками мультиметр в режиме измерения тока, а два других пучка блока питания соединить с соответствующими пучками материнской платы.
  4. Включить компьютер и провести измерения в Idle (без нагрузки) и Burn (c CPUBurn).
  5. Повторить измерения с двумя другими линиями.

Потребление по линиям -5 и -12В стремится к нулю — ещё бы, ведь -5 требовалось для ISA, а -12 — для COM-порта.

Есть вариант попроще, но неизвестна точность его показаний.

По описанному методу была измерена мощность потребления сервера. Получились следующие результаты.

Потребление материнской платы D945GCLF2 с 2ГБ DDR2-800 памяти и жёстким диском HD204UI:

Idle: 0.2А * 3.3В + 2.8А * 5В + 0.3А * 12В = 16 Вт

Burn: 0.2А * 3.3В + 3.2А * 5В + 0.6А * 12В = 22 Вт.

Как видим, это значительно отличается от референсных значений в даташите на материнку, в меньшую сторону.Power consumption

failed command: READ DMA EXT и SMART / UDMA_CRC_Error_Count (решено)

После аварийного завершения работы (случайного отключения линии +12 вольт) в консоль стали постоянно (раз в секунду) сыпаться такие сообщения:

[ 2727.401739] ata3.00: configured for UDMA/33
[ 2727.404361] ata3: EH complete
[ 2728.630577] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
[ 2728.634722] ata3.00: BMDMA stat 0x26
[ 2728.638424] ata3.00: failed command: READ DMA EXT
[ 2728.642090] ata3.00: cmd 25/00:20:38:20:3d/00:00:3a:00:00/e0 tag 0 dma 16384 in
[ 2728.642090]          res 51/84:18:40:20:3d/84:00:3a:00:00/e0 Emask 0x30 (host bus error)
[ 2728.649486] ata3.00: status: { DRDY ERR }
[ 2728.653151] ata3.00: error: { ICRC ABRT }
[ 2728.656827] ata3: soft resetting link

Параметр UDMA_CRC_Error_Count (№199) в SMART постоянно растёт, обмен с диском крайне медленный. Это не значит, что винт умирает, вероятнее всего причина в  плохом кабеле; чемпионы по этим ошибкам — кабели AsLink. Если замена кабеля не дала эффект, попробуйте пару других кабелей — купите новый, или найдите заведомо исправный, или вообще проверьте диск на другом компьютере. Подчёркиваю, что скорее всего (по опыту людей с форумов) проблема именно в кабеле или контактах.

**Проблема:** появление в консоли множества сообщений  failed command: READ DMA EXT и рост значения параметра SMART UDMA_CRC_Error_Count.

Решение: заменить кабель SATA.

Источник