Войти

Показать полную графическую версию : Rtorrent vs SATA HDD


Страниц : [1] 2

emlen
04-01-2011, 18:55
Здравствуйте! Есть машинка:

CPU: Intel(R) Pentium(R) 4 CPU 1.50GHz (1514.92-MHz 686-class CPU)
real memory = 134152192 (127 MB)
ad0: 76350MB <SAMSUNG SP8004H QW100-61> at ata0-master UDMA100
ad2: 476938MB <Seagate ST3500410AS CC34> at ata1-master UDMA133

На ней развернут pfsense, который в дальнейшем пересобран частично, докинуты порты и исходники мира.
Затем настроены proftpd и rtorrent с веб-мордочкой:)
Сигейт HDD имеет интерфейс SATA и подключен через переходник к IDE разъему мамы и фунциклирует нормально.
Предполагалось использовать его для хранения раздач и закачек rtorrent, но как только они начинают взаимодействовать (см. САБЖ), начинаются косяки, отрубается веб pfsens'а, rtorrent'а, вплоть до полного подвисания машинки. В связи с чем рождается вопрос:

Как снизить нагрузку на проц?
Как снизить нагрузку на жесткий (ad) диск, кроме как сменой режима UDMA?

vadblm
04-01-2011, 19:56
Сигейт HDD имеет интерфейс SATA и подключен через переходник к IDE разъему мамы и фунциклирует нормально. »
Зачем через переходник? Расскажите, какое у вас остальное железо, особо интересует материнка и сеть. Также укажите, на базе какой версии FreeBSD сделан pfsense.
Как снизить нагрузку на жесткий (ad) диск, кроме как сменой режима UDMA? »
Использовать по возможности AHCI. Заодно это снизит нагрузку на CPU. Смотрите systat -vmstat под нагрузкой, у вас там наверняка шторм прерываний.

Ну или искусственно ограничить скорость подключения и количество пиров для торрентов.

emlen
04-01-2011, 22:54
Спасибо, что ответили!
Итак перейду к деталям:

какое у вас остальное железо

мать-GIGABYTE GA-8SR533
vr0: <VIA VT6105 Rhine III 10/100BaseTX> port 0xe800-0xe8ff mem 0xea012000-0xea0120ff irq 16 at device 12.0 on pci0
rl0: <RealTek 8139 10/100BaseTX> port 0xec00-0xecff mem 0xea013000-0xea0130ff irq 17 at device 13.0 on pci0

Зачем через переходник? Потому шта был винт, надо было его обогреть и применить, а мать старенькая...:)
pfsense на базе FreeBSD 7.2-RELEASE-p5 i386, есть нюанс: вот мой make.conf, я не пересобирал мир, только не особо критичное..

#/etc/make.conf
PORTSDIR?= /usr/ports
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
# (Intel CPUs) nocona pentium4[m] prescott pentium3[m] pentium-m
# pentium2 pentiumpro pentium-mmx pentium i486 i386
# (Via CPUs) c3 c3-2
# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
# AMD64 architecture: opteron, athlon64, nocona
# Intel ia64 architecture: itanium2, itanium
CPUTYPE?= i386
# Здесь указываем дополнительные флаги
CFLAGS=-O1 -pipe
NO_PROFILE=true # Обход построения библиотек для профилирования

# Говорим что флаги включать обязательно
NO_CPU_CFLAGS=false
NO_CPU_COPTFLAGS=false
# Отрубаем сборку ненужных библиотек и софта
# посмотреть что еще можно накрутить тут
# /usr/share/examples/etc/make.conf или чуть ниже я опишу.
MAKE_KERBEROS4=false
MAKE_KERBEROS5=false
NO_BIND=true
NO_SENDMAIL=true
NO_GAMES=true


# Документация токо для ENG и RUS
DOC_LANG=en_US.ISO8859-1 ru_RU.KOI8-R

SUP_UPDATE=
SUP= /usr/bin/csup
SUPFLAGS= -g -L 2 -z
#SUPHOST= cvsup.FreeBSD.org
SUPFILE= /etc/supfile
#PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
DOCSUPFILE= /etc/supfile
#OVERRIDE_LINUX_NONBASE_PORTS= f10
#OVERRIDE_LINUX_BASE_PORT= f10
#LINUX_DIST_SUFFIX= -f10
#FORCE_PKG_REGISTER=yes
WITCH=BATCH=yes # не выдавать окно в котором спрашивать с чем компилировать
BATCH=yes
MASTER_SITE_OVERRIDE?= \
ftp://ftp5.ua.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp7.ua.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.ua.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.gentoo.org.ua/distfiles/${DIST_SUBDIR}/ \
ftp://ftp2.ua.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp6.ua.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp8.ua.FreeBSD.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.linux.kiev.ua/pub/Linux/Gentoo/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.lucky.net/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR} \
ftp://ftp3.ua.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
ftp://ftp4.ua.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.ntu-kpi.kiev.ua/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.univ.kiev.ua/pub/FreeBSD/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.univ.kiev.ua/pub/OS/FreeBSD/distfile/${DIST_SUBDIR} \

# Настройки Perl
# added by use.perl 2010-12-25 21:07:56
PERL_VERSION=5.10.1
PERL_ARCH=mach
NOPERL=no
WITH_PERL=yes
WITHOUT_PERL=no

Использовать по возможности AHCI Пожалуйста, можно с этого момента подробнее:)
Ну или искусственно ограничить скорость подключения и... И вот мой .rtorrent.rc


#минимальное число пиров на торрент
min_peers = 1

#максимальное число пиров на торрент
max_peers = 100

# Тоже что и выше, только для seed выкаченных torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50

#максимальная скорость загрузки
download_rate = 0

#максимальная скорость отдачи. 0 - не ограничена
upload_rate = 0

# Максимальное количество одновременных закачек per torrent.
max_uploads = 15

#каталог для сохранения закачек или откуда буду сидироваться торренты.
directory = /home/p2p/download/

#каталог куда будет сохраняться состояние торрентов.
#Здесь, в этом примере, они сохраняются в папку session
session = /home/p2p/session/

#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent файлы
#и если они есть то ставит их на закачку
schedule = watch_directory,5,5,load_start=/home/p2p/auto/*.torrent

# и тормозим торрент если
# если .torrent файл удалён
schedule = untied_directory,5,5,stop_untied=

# закрываем торренты если мало места на харде
schedule = low_diskspace,5,60,close_low_diskspace=100M

# Перемещает загруженный файл в другую папку после окончания закачки
# Удобно для мультимедийных центров, чтобы не пытаться воспроизвести недокачаный файл
on_finished = move_complete,"execute=mv,-n,$d.get_base_path=,/home/p2p/PUBLIC/ ;d.set_directory=/home/p2p/PUBLIC/"

#проверяет каталоги 2 и 3 на новые *.torrent файлы и сохраняет закачки в соответствующие папки
#schedule = watch_directory_2,5,5,"load_start=/home/user/torrent_auto_load_2/*.torrent,
#d.set_directory=/home/user/download2"
#schedule = watch_directory_3,5,5,"load_start=/home/user/torrent_auto_load_3/*.torrent,
#d.set_directory=/home/user/download3"

#номер порта (или нескольких портов) который открывает клиент для обмена данными
port_range = 40890-40890

#случайный выбор порта для обмена данными. В данном случае он отключён
port_random = no

#проверять хэш торрента после закачки
check_hash = yes

#сохранять сессию
session_save = yes

#принимать зашифрованные входящие соединения, устанавливать незашифрованные исходящие соединения,
#если возвращает ошибку, повторять с шифрованием, предпочитать открытый текст после установления
#зашифрованного соединения
encryption = allow_incoming,enable_retry,prefer_plaintext

#использовать udp
use_udp_trackers = yes

#разрешить обмен пирами(если торренты не отмечены как частные)
peer_exchange = yes

scgi_port = 127.0.0.1:5000

safe_sync = yes
#encoding_list = UTF-8
#encoding_list = cp1251
encoding_list = UTF-8;CP1251;KOI8-R
# кол-во памяти запрашиваемого у ядра, малое значение может вызвать
#простой дисковой подсистемы, большое к сбросу страниц памяти.
hash_read_ahead = 5

#интервал между попытками хеширования
hash_interval = 100

#кол-во попыток проверки хеша во время mincore(хер знает что это) статуса,
#перед принуждением. Нагруженные системы должны использовать меньшие
#значени для получения нормальной скорости проверки хеша.
hash_max_tries = 5

#СНИЖЕНИЕ НАГРУЗКИ НА СИСТЕМУ
#Вы все же хотите бороться с ситуацией своим странным способом - уменьшите количество слотов закачки до одного, например.
max_downloads_global = 2
#Так же можете попробовать уменьшить значение max_memory_usage, hash_read_ahead и увеличить hash_interval.

#ПЛАНИРОВЩИК
# Каждый день сработает тригер "throttle_1" в 18:00 и установит скорость
# скорость закачки в unlimited, а тригер "throttle_2" установит ее в 15kb
# в 08:00. Используя это клиент может автоматически регулировать скорость закачки.
#schedule = throttle_1,18:00:00,24:00:00,download_rate=0
#schedule = throttle_2,08:00:00,24:00:00,download_rate=15

vadblm
04-01-2011, 23:11
мать-GIGABYTE GA-8SR533 »
Боже, какой мусор. SiS чипсет и сата портов вообще нету, да? Я бы с одной стороны, посоветовал купить PCI-SATA2 HBA, но с другой, приличные стоят прилично, а со всякими Silicon Image могут возникнуть свойственные уже им проблемы.
vr0: <VIA VT6105 Rhine III 10/100BaseTX> port 0xe800-0xe8ff mem 0xea012000-0xea0120ff irq 16 at device 12.0 on pci0
rl0: <RealTek 8139 10/100BaseTX> port 0xec00-0xecff mem 0xea013000-0xea0130ff irq 17 at device 13.0 on pci0 »
Жуткий мусор, особенно последнее. Нет возможности сменить на fxp(4) или xl(4)?
Потому шта был винт, надо было его обогреть и применить, а мать старенькая.. »
Я уже понял...
FreeBSD 7.2-RELEASE-p5 i386 »
ОК.
Пожалуйста, можно с этого момента подробнее »
ahci(4) (http://www.freebsd.org/cgi/man.cgi?query=ahci&manpath=FreeBSD+8.1-RELEASE). Только это не про ваше железо...

Повторяю, посмотрите systat -vmstat
Подозрения на шторм прерываний у меня только укрепились.

emlen
04-01-2011, 23:33
Повторяю, посмотрите systat -vmstat
systat

/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10
Load Average ||

/0% /10 /20 /30 /40 /50 /60 /70 /80 /90 /100
root idle: cpu0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
p2p rtorrent X
root irq17: rl0 X

vmstat

procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr ad0 ad2 in sy cs us sy id
1 3 0 4671M 9436K 1754 580 9 3 940 227 0 0 294 1626 1374 11 7 82

Подозрения на шторм прерываний у меня только укрепились
И как усмирить этот шторм?:)

vadblm
04-01-2011, 23:37
Покажите вывод именно команды systat -vmstat
Оно примерно так должно выглядеть:

1 users Load 0.01 0.02 0.00 Jan 4 22:38

Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 352580 121272 4919896 142304 345864 count
All 426332 125728 1078784k 182620 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4005 total
24 88 4185 2 131 4 1001 zfod uhci2 ehci
ozfod uhci0 uhci
1.1%Sys 0.0%Intr 0.0%User 0.0%Nice 98.9%Idle %ozfod fwohci0+ 1
| | | | | | | | | | | daefr uhci1++ 21
= prcfr 2001 cpu0: time
4 dtbuf 73 totfr 3 em0 irq256
Namei Name-cache Dir-cache 100000 desvn react em1 irq258
Calls hits % hits % 83118 numvn pdwak em1 irq259
25000 frevn pdpgs em2 irq260
intrn em2 irq261
Disks ad6 505856 wire em2 irq262
KB/t 0.50 351140 act 2001 cpu1: time
tps 0 2764384 inact
MB/s 0.00 484 cache
%busy 0 345380 free

emlen
04-01-2011, 23:42
Ой, вот я лошара:) Привожу вывод:

1 users Load 0.01 0.02 0.02 4 янв 23:44

Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 62048 2784 4067836 10216 34268 count 11
All 75792 3264 6196476 15360 pages 168
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt 41 cow 2157 total
3 26 789 176 804 154 165 171 67 zfod 14 ata0 irq14
3 ozfod ata1 irq15
1.2%Sys 0.2%Intr 0.0%User 0.0%Nice 98.6%Idle 5%ozfod vr0 irq16
| | | | | | | | | | | daefr 130 rl0 irq17
= 66 prcfr 11 ath0 irq18
23 dtbuf 128 totfr 2002 cpu0: time
Namei Name-cache Dir-cache 8157 desvn react
Calls hits % hits % 2666 numvn pdwak
409 409 100 1945 frevn pdpgs
intrn
Disks ad0 ad2 35744 wire
KB/t 49.92 0.00 22040 act
tps 14 0 23020 inact
MB/s 0.69 0.00 2700 cache
%busy 3 0 31568 free
21744

vadblm
04-01-2011, 23:56
Нагрузки особой не вижу, но 130 прерываний у rl0 даже при таком минимуме намекают.
swapinfo ещё покажите.

emlen
05-01-2011, 00:14
но 130 прерываний у rl0 даже при таком минимуме намекают
Не знаю, стоит ли на этом заострять внимание, но это внешний интерфейс, еще ath0 - внутренняя wifi..
swapinfo ещё покажите

# swapinfo
Device 1K-blocks Used Avail Capacity
/dev/label/sw_81 1048308 23244 1025064 2%

Сейчас все глюки и отвалы во время переноса закачек в ответ на

on_finished = move_complete,"execute=mv,-n,$d.get_base_path=,/home/p2p/PUBLIC

в .rtorrent.rc.
Особенно во время проверки хэша.... PUBLIC я разместил на том самом SATA ad2, чтобы хоть не все время все висело:)))

vadblm
05-01-2011, 00:29
Процитирую хендбук:

11.16.3.3. Система останавливается (временно или постоянно)
Большинство систем останавливаются в результате потери прерываний или ''шторма'' прерываний. В чипсетах существует много проблем, связанных с тем, как BIOS настраивает прерывания перед загрузкой, правильностью таблицы APIC (MADT), и маршрутизации System Control Interrupt (SCI).

''Шторм'' прерываний может быть обнаружен по потерянным прерываниям путем проверки вывода строки с acpi0 команды vmstat -i. Если счетчик увеличивается более, чем несколько раз в секунду, это ''шторм'' прерываний. Если система останавливается, попробуйте войти в DDB (CTRL+ALT+ESC на консоли) и ввести show interrupts.

Наиболее надежный способ избавиться от проблемы с прерываниями, это отключение поддержки APIC с помощью параметра loader.conf hint.apic.0.disabled="1".

(Выделение моё)
Можете, конешно, попробовать рекомендацию с отключением APIC, но первым делом я бы заменил rl0 на что-нибудь более вменяемое. А посмотрев на ценники не совсем отстойных PCI-SATA2 HBA, предложил бы поменять мать+проц+память на что-то уровня i945/G31+Celeron/Pentium Dual Core LGA775 младшенький+512Мб/1Гб DDR2 - те же ~$100-150, но хоть точно работать будет без затыков :)

Да, и памяти крайне мало - даже под минимальной нагрузкой система у вас в свап лезет.

ЗЫ А какой у вас канал?

emlen
05-01-2011, 00:46
попробовать рекомендацию с отключением APIC »
А чем, в общих чертах, грозит его отключение?
предложил бы поменять мать+проц+память на что-то уровня i945/G31+Celeron/Pentium Dual Core LGA775 »
Дело в том, что тут не железки под конкретные цели, а скорее работа для списанного железа:) Что если местами поменять rl0 с vr0? Канал чуть больше мегабита...
Да, и памяти крайне мало - даже под минимальной нагрузкой система у вас в свап лезет »
Память искал, тяжко подобрать к этой маме в магазинах, но планирую прикупить, с учетом того, что в дальнейшем мне еще нужен канал VPN с приватным внешним адресом, скорее всего придется виртуальную вин-машинку громоздить с teamview:)

vadblm
05-01-2011, 01:12
А чем, в общих чертах, грозит его отключение? »
Да собственно, ничем - машинка-то одноядерная.
Дело в том, что тут не железки под конкретные цели, а скорее работа для списанного железа »
Этому железу место на помойке. Причём, с рождения (это я про сисовский чипсет).
Что если местами поменять rl0 с vr0? »
Попытка - не пытка. Но vr немногим лучше rl.
Канал чуть больше мегабита... »
Ууу, раз даже на такой ерунде затыки, то не знаю, не знаю.
нужен канал VPN »
На мегабите особой роли не сыграет. Процессора на такое с запасом хватит.

emlen
05-01-2011, 11:03
Сасибо огромное еще раз за вразумительные ответы! Возник напоследок еще вопросик:
возможно ли что-нибудь типа sysctl hw.ata.wc=0 врубить для отдельного носителя?
Чтобы это не коснулось моего системного диска...

vadblm
05-01-2011, 13:31
hw.ata.wc=0 »
С чего вы взяли, что отключение кэша записи диска снизит нагрузку?

emlen
05-01-2011, 23:01
хм.. не думал что снизит нагрузку, просто думал, попробую, глядишь что-нибудь изменится в лучшую сторону, появится новая зацепка:)))

vadblm
05-01-2011, 23:16
Вы сетевухи-то менять пробовали? Не просто местами "Карлсон, переодень носочки", а на вменяемые от интеля или 3кома.

emlen
06-01-2011, 10:58
Еще пока что тока в планах, надо порыться в хламе, может найду что-нить получше... Покупать не в тему, все равно что фикалии красной икрой намазывать:) Изначально была задача приспособить эту "какашку", чтоб работала, пока не загнется:)) Пока что вроде неплохо все, благодаря Вашей помощи! Большое спасибо!

vadblm
07-01-2011, 14:37
Покупать не в тему, все равно что фикалии красной икрой намазывать »
Ну я как раз в том плане, пошукать по сусекам в первую очередь. Так то да, у интеловских соток ценники кусачие по сравнению с реалтековскими - $30 против $5 :) Но не так давно без особого труда находил на барахолках давно снятые с производства, но тем не менее очень неплохие 3com 3c905B/C за те же $5.

emlen
11-01-2011, 21:23
И снова ЗДРАВСТВУЙТЕ!!!

Jan 11 06:33:23 kernel: vm_fault: pager read error, pid 3943 (rtorrent)
Jan 11 06:33:23 kernel: vnode_pager_getpages: I/O read error
Jan 11 06:33:23 kernel: g_vfs_done():label/storage_fs[READ(offset=468491112448, length=65536)]error = 5
Jan 11 06:33:23 kernel: ad2: FAILURE - READ_DMA48 timed out LBA=915021830
Jan 11 06:33:17 kernel: ad2: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=915021830
Jan 11 06:33:12 kernel: ad2: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=915021830

Вот что имею, как поступить с винтом? после этого он вернулся сам к жизни, проверка fsck ниче не находит, думаю косяк с переходником... что можно софтовое предпринять?

vadblm
11-01-2011, 21:49
Проверить показания смарта при помощи smartctl из пакета smartmontools (http://www.freshports.org/search.php?query=smartmontools&search=go&num=10&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive).

Возможно, заменить шлейф.

Хотя, насколько я помню, у вас там мутант через переходник сата-иде... Я таким не пользовался, ничего в этом случае не могу посоветовать, кроме того, что уже раньше советовал - избавиться от этого мусорника.




© OSzone.net 2001-2012