Подскажите пожалуйста какую версию FreeBSD лучше использовать?
и какие тонкости/специфика настройки ОС для использования в качестве сервера на много одновременных подключений ?
(вроде
net.graph.recvspace=81920
net.graph.maxdgram=81920
)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Чем свежее тем лучше. Лучше всего свежую 7-STABLE, с момента релиза много чего поменялось.
Современным системам никакого особого тюнинга под mpd можно не делать.
Тот что ты привел нужен далеко не всегда, хотя и вреда от него пожалуй не будет.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
RELENG_7 - это как раз и есть ветка CVS соответствующая 7-STABLE.
STABLE в отличие от RELEASE постоянно изменяется.
В настоящий момент, в связи с подготовкой релиза 7.1, RELENG_7 - это 7.1-PRERELEASE.
Когда релиз 7.1 выйдет - ее переименуют в 7.1-STABLE.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Также провожу эксперименты с версией 7.1, но пока не очень успешны...
Около недели назад обновил до 7.1 PRERELEASE. Имеем около 600 активных сессий и при такой нагрузке mpd5.2 уходит в глубокий ступор. kill -9 не помогает, только жесткий reset машины
При этом есть такая же машина, на которой система обновлялась сразу после выхода BETA 2.
На ней кол-во сессий доходит до 1000, при этом проблем нет...
Информации по поводу что же случилось в ноябре с PRERELEASE пока не нашел
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
На одной из машин собрал ядро без SMP пока проблем не наблюдалось...
Интересная ситуация наблюдается с машиной описанной выше, с WCPU до 155. Сегодня видео цифру в 800. При этом по туннелям переставал ходить трафик, хотя они и не обрывались. информация в web-интерфейсе также была неадекватна (неверное кол-во сессий)...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
WCPU более 100% может быть когда у приложения несколько активных тредов.
Значение 800 в случае mpd может говорить об очень высоком темпе авторизации, возможно атаке.
Как следует понимать "неверное кол-во сессий"?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
>Как следует понимать "неверное кол-во сессий"?
Кол-во ng-интерфейсов в системе и кол-во записей в web было разным (более 1000 в веб, около 300 реально).
Все системы собранные с SMP падают кроме одной, обновленной 16 октября 2008.
После пересборки ядер без SMP пока проблем не наблюдаю, но и производительность не та....
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
mpd 5.2 с pppoe из CVS.
клиентов 200-300 навешивается, трафик небольшой, мегабайт 15 дуплексом.
И тут отваливается ssh, но машинка продолжает пинговаться. Консолью посмотреть ничего невозможно. Машинка находится в глубоком ступоре. Помогает резет.
На машинке стоит квад, система собрана с SMP.
В ядре NETGRAPH_* нет вобще, все подгружается модулями.
Натит pf.
Шейпит ipfw.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Итак, с ядром без SMP две машины уже несколько дней стоят без зависаний.
С SMP не падает только одна, описанная выше. Конфигурации у всех машин похожи (C2Q и C2D, матери Supermicro, сетевые em)...
Планирую сделать клон этой системы и запустить на других машинах
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Вот секция. Ядра на всех системах абсолютно одинаковые. Машина, собранная с SMP, назовем ее hostSMP стоит несколько дней при 600-700 пользователях и при примерно 70-80 тыс pps на двух интерфейсах. При этом другие виснут и при менее 300
sysctl не крутил, net.isr.direct: 1.
options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
#options NFSSERVER # Network Filesystem Server
#options NFSLOCKD # Network Lock Manager
#options NFS_ROOT # NFS usable as /, requires NFSCLIENT
#options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
#options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options STACK # stack(9) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
options AUDIT # Security event auditing
#options KDTRACE_HOOKS # Kernel DTrace hooks
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
options DEVICE_POLLING
options HZ=2000
options SMP # Symmetric MultiProcessor Kernel
device apic # I/O APIC
device pf
device carp
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Тебе и правда нужно столько опций отсутствующих в GENERIC? Ты используеш ALTQ, pf, carp? Не имею ничего конкретного против, но предполагаю, что если чего-то нет в GENERIC, то оно как минимум может быть менее исхожено юзерами, особенно в комбинации с другими опциями.
Я в последнее время предпочитаю использовать ядра, максимально приближенные к GENERIC везде где это возможно. Для этого удобно использовать include, посмотри для примера конфиг PAE.
В твоем случае зацикливается один из тредов ядра. Где именно это происходит, без какого-то дебаггера или профайлера установить сложно, особенно если проявляется не везде и не особо предсказуемо.
Потому я бы начал с выкидывания всего лишнего и включения отладки. Например, включить больше логов mpd и смотреть на каком именно месте он встанет. Можно в mpd включить именно логгирование всех обращений к netgraph. Так как циклится другой тред, это не покажет где именно это происзодит, но это косвенно может показать какие netgraph ноды это затрагивает, вызывая подлипаниe запроса от mpd на локе.
Можно попробовать воспользоваться профайлером. Правда hwpmc в семерке еще не умеет работать с Core2, а kgmon по слухам не всегда работает нормально с SMP. Но попробовать последний можно. До момента непосредственной активации, я не заметил влияния профайлинга на производительность. Правда прийдется собрать ядро с жестко вкомпиленными всеми необходимыми модулями, так как gprof не умеет их подгружать.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
На сколько я понимаю - что-то зацикливается где-то в ядре, из-за чего mpd без конца ждет ответа на запрос кnetgraph. Не думаю что тут сам mpd виноват. Проблема вполне может найтись где-то в netgraph или в совершенно другой подсистеме ядра.
Надо как-то найти что зациливается. Когда это повторится - попробовать выдрать не на долго из роутера езер, чтобы поглядеть не спадет ли загрузка проца. Если нет - значит действительно что-то циклит. Как понять что именно - вопрос не простой. Или как-то правильно свалить ядро в корку или прицепиться к нему дебагером удаленно, или запрячь какой-то профайлинг. У меня нет готовых рецептов.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Подскажите пожалуйста какую версию FreeBSD лучше использовать?
и какие тонкости/специфика настройки ОС для использования в качестве сервера на много одновременных подключений ?
(вроде
net.graph.recvspace=81920
net.graph.maxdgram=81920
)
Чем свежее тем лучше. Лучше всего свежую 7-STABLE, с момента релиза много чего поменялось.
Современным системам никакого особого тюнинга под mpd можно не делать.
Тот что ты привел нужен далеко не всегда, хотя и вреда от него пожалуй не будет.
Добрый день.
Что имеется ввиду под 7-STABLE?
У меня с cvstag RELENG_7 получилась 7.1 Prerelease.
На сколько я знаю 7.0-STABLE не будет.
RELENG_7 - это как раз и есть ветка CVS соответствующая 7-STABLE.
STABLE в отличие от RELEASE постоянно изменяется.
В настоящий момент, в связи с подготовкой релиза 7.1, RELENG_7 - это 7.1-PRERELEASE.
Когда релиз 7.1 выйдет - ее переименуют в 7.1-STABLE.
C 7.1-PRERELEASE был опыт запуска mpd? И какой?
Лучший. PPTP при куче сессий, например, в разы быстрее чем на 7.0 и 6.x.
Также провожу эксперименты с версией 7.1, но пока не очень успешны...
Около недели назад обновил до 7.1 PRERELEASE. Имеем около 600 активных сессий и при такой нагрузке mpd5.2 уходит в глубокий ступор. kill -9 не помогает, только жесткий reset машины
При этом есть такая же машина, на которой система обновлялась сразу после выхода BETA 2.
На ней кол-во сессий доходит до 1000, при этом проблем нет...
Информации по поводу что же случилось в ноябре с PRERELEASE пока не нашел
1609 root 32 44 0 31964K 13644K select 1 0:00 0.63% mpd5 вот статус процесса с проблемной машины
1741 root 55 47 0 38364K 22180K select 0 0:00 155.22% mpd5
а вот с той, которая работает
Разница в параметре WCPU. Почему на рабочей системе так зашкаливает, до 155?
1609 root 26 8 0 34268K 16068K nanslp 0 0:00 0.00% mpd5
вот в такой статус уходит процесс при проблеме.
Видел и я такое.
http://sourceforge.net/forum/forum.php?thread_id=2254056&forum_id=44693
Выявить причину не смог. Симптомы очень похожи, правда машина остается доступна по ssh.
У меня ~1000 активных туннелей трафик в пика допрыгивает до 200 Mb/s ~100 Kppp.
Забыл сказать, что при кол-ве соединение до 300 проблем не наблюдалось
На одной из машин собрал ядро без SMP пока проблем не наблюдалось...
Интересная ситуация наблюдается с машиной описанной выше, с WCPU до 155. Сегодня видео цифру в 800. При этом по туннелям переставал ходить трафик, хотя они и не обрывались. информация в web-интерфейсе также была неадекватна (неверное кол-во сессий)...
WCPU более 100% может быть когда у приложения несколько активных тредов.
Значение 800 в случае mpd может говорить об очень высоком темпе авторизации, возможно атаке.
Как следует понимать "неверное кол-во сессий"?
>Как следует понимать "неверное кол-во сессий"?
Кол-во ng-интерфейсов в системе и кол-во записей в web было разным (более 1000 в веб, около 300 реально).
Все системы собранные с SMP падают кроме одной, обновленной 16 октября 2008.
После пересборки ядер без SMP пока проблем не наблюдаю, но и производительность не та....
А какой шедулер в ядре используете? Просто интересно.
У меня с 7.1 пока опыт тоже не очень.
mpd 5.2 с pppoe из CVS.
клиентов 200-300 навешивается, трафик небольшой, мегабайт 15 дуплексом.
И тут отваливается ssh, но машинка продолжает пинговаться. Консолью посмотреть ничего невозможно. Машинка находится в глубоком ступоре. Помогает резет.
На машинке стоит квад, система собрана с SMP.
В ядре NETGRAPH_* нет вобще, все подгружается модулями.
Натит pf.
Шейпит ipfw.
>А какой шедулер в ядре используете? Просто интересно.
options SCHED_ULE
Итак, с ядром без SMP две машины уже несколько дней стоят без зависаний.
С SMP не падает только одна, описанная выше. Конфигурации у всех машин похожи (C2Q и C2D, матери Supermicro, сетевые em)...
Планирую сделать клон этой системы и запустить на других машинах
Она хоть сколько-нибудь работает с 300 пользователями?
Если не сложно, покажите пожалуйста начальную секцию из конфига, где options.
И крутили ли вы какие-нибудь ручки sysctl?
Например интересно в net.isr.direct что стоит?
Вот секция. Ядра на всех системах абсолютно одинаковые. Машина, собранная с SMP, назовем ее hostSMP стоит несколько дней при 600-700 пользователях и при примерно 70-80 тыс pps на двух интерфейсах. При этом другие виснут и при менее 300
sysctl не крутил, net.isr.direct: 1.
options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
#options NFSSERVER # Network Filesystem Server
#options NFSLOCKD # Network Lock Manager
#options NFS_ROOT # NFS usable as /, requires NFSCLIENT
#options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!]
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
#options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options STACK # stack(9) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
options AUDIT # Security event auditing
#options KDTRACE_HOOKS # Kernel DTrace hooks
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
options DEVICE_POLLING
options HZ=2000
options SMP # Symmetric MultiProcessor Kernel
device apic # I/O APIC
device pf
device carp
Тебе и правда нужно столько опций отсутствующих в GENERIC? Ты используеш ALTQ, pf, carp? Не имею ничего конкретного против, но предполагаю, что если чего-то нет в GENERIC, то оно как минимум может быть менее исхожено юзерами, особенно в комбинации с другими опциями.
Я в последнее время предпочитаю использовать ядра, максимально приближенные к GENERIC везде где это возможно. Для этого удобно использовать include, посмотри для примера конфиг PAE.
В твоем случае зацикливается один из тредов ядра. Где именно это происходит, без какого-то дебаггера или профайлера установить сложно, особенно если проявляется не везде и не особо предсказуемо.
Потому я бы начал с выкидывания всего лишнего и включения отладки. Например, включить больше логов mpd и смотреть на каком именно месте он встанет. Можно в mpd включить именно логгирование всех обращений к netgraph. Так как циклится другой тред, это не покажет где именно это происзодит, но это косвенно может показать какие netgraph ноды это затрагивает, вызывая подлипаниe запроса от mpd на локе.
Можно попробовать воспользоваться профайлером. Правда hwpmc в семерке еще не умеет работать с Core2, а kgmon по слухам не всегда работает нормально с SMP. Но попробовать последний можно. До момента непосредственной активации, я не заметил влияния профайлинга на производительность. Правда прийдется собрать ядро с жестко вкомпиленными всеми необходимыми модулями, так как gprof не умеет их подгружать.
Александр, а ты какую BSD используешь, 32 или 64 бит?
На роутерах 32. На серверах, особенно с большим количеством памяти - 64.
Пока вижу, что у трех человек одинаковые проблемы.
Саш, в mpd есть какая-то проблема или это надо ковырять ядро, sysctl и прочее?
На сколько я понимаю - что-то зацикливается где-то в ядре, из-за чего mpd без конца ждет ответа на запрос кnetgraph. Не думаю что тут сам mpd виноват. Проблема вполне может найтись где-то в netgraph или в совершенно другой подсистеме ядра.
Надо как-то найти что зациливается. Когда это повторится - попробовать выдрать не на долго из роутера езер, чтобы поглядеть не спадет ли загрузка проца. Если нет - значит действительно что-то циклит. Как понять что именно - вопрос не простой. Или как-то правильно свалить ядро в корку или прицепиться к нему дебагером удаленно, или запрячь какой-то профайлинг. У меня нет готовых рецептов.