Страница 1 из 2
Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-03 0:00:16
switchy
Приветствую.
Ребята помогите разобраться в проблеме. Стоит FreeBSD 9.1 RC1, железо:
Код: Выделить всё
CPU: Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz (2494.40-MHz K8-class CPU)
real memory = 8589934592 (8192 MB)
em0: <Intel(R) PRO/1000 Network Connection 7.3.2> port 0xf080-0xf09f mem 0xfe400000-0xfe41ffff,0xfe428000-0xfe428fff irq 20 at device 25.0 on pci0
ada0: <Hitachi HDS721050CLA362 JP2OA3MA> ATA-8 SATA 2.x device
ada1: <Hitachi HDS721050CLA362 JP2OA3MA> ATA-8 SATA 2.x device
материнская плата Intel DQ67OW
Из особенностей по одному разделу из ada0 и ada1 объединены в GEOM_STRIPE. На хосте 6 jail-окружений.
Проблема заключается в том, что появились задержки в работе системе, время от времени, четкой периодичности нет. На практике в интерактивной консоли после ввода команды (ls, top, ...) происходит задержка от 1 до 10 секунд, далее команда выполняется. Также это заметно когда идут запросы к web-серверу к обычным статические HTML-страницам.
Подскажите, куда "смотреть", как это можно диагностировать? Проблема серьезная уже несколько месяцев не дает покоя.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-03 0:30:52
Electronik
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-03 0:58:13
switchy
Код: Выделить всё
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr md0 ad0 in sy cs us sy id
0 0 0 16484M 507M 1028 0 0 0 1506 134 0 0 341 2531 2182 8 2 90
0 0 0 16484M 505M 400 0 0 0 946 0 1 70 294 28575 7045 2 2 95
0 0 0 16476M 518M 172 0 0 0 2099 0 1 64 221 10119 5485 2 1 97
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-03 10:37:12
baton4eg
попробуйте посмотреть не нагружены ли жёсткие диски:
gstat
gstat -a
Т.е если где то увидите 100%, как раз в этот момент и происходят тормоза.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 0:33:07
switchy
Создал ролик, в котором попытался показать проблемы с задержками, возможно это даст какое-то представление.
Обязательно включите субтитры (cc)
http://www.youtube.com/watch?v=Ks8svRuRu-0
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 0:37:35
mak_v_
gstat рычит прям....
свопит у вас небось что-то яро?
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 2:31:56
Electronik
еб@ть, там же джава, jabber-сервер?
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 11:10:27
baton4eg
Диск(и) не справляются с нагрузкой, 100% заняты, в следствие чего и тормоза.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 11:42:25
switchy
Возможно я попал во время записи ролика в то время, когда диски активно работали. Но тормоза происходят и в то время когда диски не нагружены, это 100% я проверял.
jabber - сервера там нет.
Версию про swap, можно отбросить, там всего на 4Mb и он не растет.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 12:02:12
baton4eg
какие модели жёстких у вас стоят? я так понял у вас RAID0 ? Так кто вам мешает включить консоль, запустить gstat -a на пол часа и посмотреть картину. Как вы проверяли что тормоза происходят и в то время когда диски не нагружены? т.е у вас две консоли, в первой вы к примеру балуетесь с командами "w" "tail -f /var/log/messages" на второй запущен gstat -a? и вы видите что тормоза происходят когда диски практически в простое?? Ещё картинку смартов 2-ух дисков кинуть сюда.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 12:31:15
switchy
Именно так как вы говорите, во одном терминале я смотрю gstat -a, в другом играюсь в консоли и вижу, что загруженность никак не влияет на "тормоза".
Вот информация по винчестерам:
Код: Выделить всё
# smartctl -a /dev/ada0
smartctl 5.41 2011-06-09 r3365 [FreeBSD 9.1-RC1 amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Hitachi Deskstar 7K1000.C
Device Model: Hitachi HDS721050CLA362
Serial Number: JP8540HR1TK61V
LU WWN Device Id: 5 000cca 378d940f5
Firmware Version: JP2OA3MA
User Capacity: 500 107 862 016 bytes [500 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Sun Nov 4 11:29:07 2012 EET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x84) Offline data collection activity
was suspended by an interrupting command from host.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 4978) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 83) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 055 055 016 Pre-fail Always - 737288128
2 Throughput_Performance 0x0005 116 116 054 Pre-fail Offline - 172
3 Spin_Up_Time 0x0007 128 128 024 Pre-fail Always - 189 (Average 168)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 25
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 54
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 122 122 020 Pre-fail Offline - 39
9 Power_On_Hours 0x0012 099 099 000 Old_age Always - 11490
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 25
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 47
193 Load_Cycle_Count 0x0012 100 100 000 Old_age Always - 47
194 Temperature_Celsius 0x0002 171 171 000 Old_age Always - 35 (Min/Max 18/52)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 59
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 3
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
SMART Error Log Version: 0
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Код: Выделить всё
# smartctl -a /dev/ada1
smartctl 5.41 2011-06-09 r3365 [FreeBSD 9.1-RC1 amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Hitachi Deskstar 7K1000.C
Device Model: Hitachi HDS721050CLA362
Serial Number: JP8540HR1TK6KV
LU WWN Device Id: 5 000cca 378d94105
Firmware Version: JP2OA3MA
User Capacity: 500 107 862 016 bytes [500 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Sun Nov 4 11:29:46 2012 EET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x84) Offline data collection activity
was suspended by an interrupting command from host.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 5066) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 84) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 075 075 016 Pre-fail Always - 75564020
2 Throughput_Performance 0x0005 133 133 054 Pre-fail Offline - 107
3 Spin_Up_Time 0x0007 129 129 024 Pre-fail Always - 187 (Average 168)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 25
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 2
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 128 128 020 Pre-fail Offline - 36
9 Power_On_Hours 0x0012 099 099 000 Old_age Always - 11490
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 25
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 31
193 Load_Cycle_Count 0x0012 100 100 000 Old_age Always - 31
194 Temperature_Celsius 0x0002 187 187 000 Old_age Always - 32 (Min/Max 18/49)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 2
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
SMART Error Log Version: 0
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 14:08:36
ChihPih
Че то у вас поле Reallocated_Event_Count > 0, на бэды проверте, из-за них наверно тормоза.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 14:34:15
switchy
Не думаю, значение слишком маленькое и в /var/log/messages проскакивали сообщения:
TIMEOUT - READ_DMA
А их нет и не было ни разу.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 15:09:10
Electronik
бэды
чипсет второй ревизии?
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 18:14:53
switchy
Подскажите о каком чипсете вы говорите и как посмотреть номер ревизии?
Про бэды я писал, что полагаю их нет. Так как READ DMA не было.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-04 19:07:09
Electronik
чипсет на материнке, у первой ревизии были проблемы с сата портами.
еще тут почитайте
http://ksimute.trancom.ru/smart-hdd.shtml
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-05 0:49:37
switchy
Все, что я нашел через kenv, возможно это поможет:
Код: Выделить всё
smbios.planar.maker="Intel Corporation"
smbios.planar.product="DQ67OW"
smbios.planar.serial="BQOW15100045"
smbios.planar.version="AAG12528-309"
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-06 20:32:21
switchy
Что действительно никаких идей нет?
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 7:16:17
baton4eg
обновится до RC-3 и посмотреть, т.е вы возможные проблемы с диском(ами) исключили?
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 10:17:50
switchy
Я обратился к одному мудрому человеку, предоставил доступ к серверу, вот его ответ
1. Во время "тормозов" можно нажимать Ctrl-T, чтобы узнать состояние задумавшегося процесса. У меня получилось поймать такой момент и состояние процесса было [vnread] - тормоза касаются дисковой подсистемы.
2. На корневой файловой системе не включены софтапдейты, это плохо. Нужно включить, не журналируемые. К сожалению, для корневой fs это можно сделать только из single user mode, причём после включения softupdates нельзя выходить напрямую в multiuser (изменения будут забыты), только через reboot.
3. Ядерная подсистема dirhash, ускоряющая доступ к большим каталогам, уперлась в лимит памяти:
$ sysctl vfs.ufs | grep mem:
vfs.ufs.dirhash_mem: 12894496
vfs.ufs.dirhash_maxmem: 13414400
Нужно удвоить лимит vfs.ufs.dirhash_maxmem и наблюдать затем за ростом vfs.ufs.dirhash_mem, если опять приблизится к лимиту - удвоить лимит снова и т.д.
4. systat -vm 3 показывает, что диски ada0 и ada1 сильно загружены (процент загрузки %busy близок к 100) множеством мелких запросов, значение KB/t (килобайт на транзакцию) очень мало и это убивает производительность дисковой подсистемы - современные диски очень плохо переносят много мелких запросов. Я сам не работал со страйпами, возможно они имеют ту же проблему что и RAID3, разбивая запросы к массиву у на несколько более мелких к индивидуальным дискам.
Против этой проблемы нужно применять geom_cache, который при получении запроса меньше заданного предела (имеет смысл выставлять предел в 128K) читает с диска блоками указанного предела и кеширует "лишние" данные, при следующих запросах возвращая результат из кеша и храня в памяти часто запрашиваемые дисковые блоки, как и любой кеш. Размер кеша выставляется при разметке gcache и ограничен только размером ядерной памяти. Это в разы улучшает работу дисковой подсистемы и, в том числе, увеличивает скорость чтения с дисков (MB/s в выводе systat), а сейчас она очень низка из-за малой величины запросов. На запись gcache полностью прозрачен, ничего не кеширует при записи.
То есть, нужно поверх массива gstripe создать один gcache, на нём разделы и монтировать уже эти разделы, чтобы всё чтение по пути к массиву проходило через gcache, который станет читать с массива крупными блоками по 128K и даже если gstripe разбивает запросы напополам, всё равно каждому диску достанется крупный запрос в 64K и производительность не пострадает.
Размер кеша у gcache указывается в блоках, а не в байтах.
На фоне всех указанных проблем только усугубляют состояние каталоги с очень большим количеством файлов на одном уровне (есть несколько каталогов)
Линейный поиск в них медленный и неэффективный. Система автоматически хеширует крупные каталоги, делая доступ к ним быстрыми, но только если не упирается в лимит памяти для dirhash, который я упоминал в прошлом сообщении. По возможности нужно реструктуризовать приложения так, чтобы они не хранили все файлы на одном уровне, либо если в этих каталогах быстро устаревающие данные типа короткоживущих файлов состояний php-сессий, организовать оперативную очистку устаревших файлов, чтобы они не накапливались в таком количестве. Ну, или на крайний случай, резко увеличивать лимит на dirhash и надеяться на эффективность системного хеширования поиска - об этом уже писал.
Реально я ему очень признателен за то что он нашел время и попытался диагностировать мою проблему.
Спасибо тебе dadv

Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 13:17:46
Anoanus
Кстати говоря вы пробовали читать со страйпа dd блоки? Скорость чтения в два раза не падает по сравнению со скоростью чтения с каждого из участников страйпа?
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 13:59:15
Alex Keda
собственно, вам сразу и тут написали...
baton4eg писал(а):Диск(и) не справляются с нагрузкой, 100% заняты, в следствие чего и тормоза.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 14:03:29
Anoanus
Ну дык ведь простой ответ никого не устраивает, чем больше слов и чем больше среди них незнакомых тем ответ весомее и правдоподобнее...
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 14:08:57
Anoanus
Вот ведь человек, я его роилк позырил а там в гстате ацкий ад.
Re: Непредскауемые тормоза на FreeBSD
Добавлено: 2012-11-07 14:26:22
switchy
Ребята я могу заснять ролик, когда "ацского ада" нет, дисковая подсистема не занята и точно такие тормоза. Я выше это описывал.