Не знаю че это за хрень. В dmesg:
ad4: FAILURE - out of memory in start
ad6: FAILURE - out of memory in startи т.д.
Появилась впервые когда я подключил двойной geom_stripe и дал хорошую нагрузку. Писало очень часто такие ошибки и файлы херились. На той машине стояло 2 гига памяти, из процессов только апач под 50 процессов и nginx. Как только убрал нагрузку, сообщения исчезли.Сейчас я тоже самое наблюдаю на машине с geom_mirror, но нечасто.
Что это может быть?
Нашел вот это сообщение в исходниках:
/sys/dev/ata/ata-disk.c: line 215
static void
ad_strategy(struct bio *bp)
{
device_t dev = bp->bio_disk->d_drv1;
struct ata_device *atadev = device_get_softc(dev);
struct ata_request *request;if (!(request = ata_alloc_request())) {
device_printf(dev, "FAILURE - out of memory in start\n");
biofinish(bp, NULL, ENOMEM);
return;
}
пс. система FreeBSD 6.2 RELEASE amd64
Так, нашел где эти фейлуры отображаются
vmstat -z | egrep "LIMIT|ata"
ITEM SIZE LIMIT USED FREE REQUESTS FAILURES
>>>> ata_request: 336, 0, 0, 4741, 510791362, 1 <<<<<ata_composite: 376, 0, 0, 0, 0, 0
Мож кто подскажет как сделать чтобы ему легче было?
PR создавай, письмо во freebsd.geom похоже так и останется без ответа. Сейчас глянул, по geom штук 20 незакрытых критичных PR :-(Можно попробовать капнуть в сторону kern.geom.stripe.debug и потюнить в kern.geom.stripe.*
(kern.geom.stripe.maxmem). Плюс для UFS отключить atime и увеличить таймауты сброса meta-данных на диск.Для любителей экстрима можно перейти на FreeBSD 7.0beta3 + ZFS, говорят даже работает, хотя про использование в продакшин ничего не слышал.
>PR создавай, письмо во freebsd.geom похоже так и останется без ответа. Сейчас
>глянул, по geom штук 20 незакрытых критичных PR :-(
>
>Можно попробовать капнуть в сторону kern.geom.stripe.debug и потюнить в kern.geom.stripe.*
>(kern.geom.stripe.maxmem). Плюс для UFS отключить atime и увеличить таймауты сброса meta-данных на
>диск.
>
>Для любителей экстрима можно перейти на FreeBSD 7.0beta3 + ZFS, говорят даже
>работает, хотя про использование в продакшин ничего не слышал.Наколько я понимаю это ata_malloc_request failure. Интересно, относится ли это к геому? Ну к УФС это точно не относится.
А что такое PR? Я писал в список рассылки freebsd_geom, но там тихо как в танке и вообще письма скипуют.
>Наколько я понимаю это ata_malloc_request failure. Интересно, относится ли это к геому?
>Ну к УФС это точно не относится.Вы написали, что проявляется только с geom stripe, про /sys/dev/ata/ata-disk.c я недосмотрел. Про UFS написал, как вариант снижения нагрузки на ata/geom.
Тогда нужно смотреть во что ata_alloc_request упирается. В память выделенную ядру не должен, вроде на amd64 ее полно.
На всякий случай гляньте sysctl -a|grep -E "kmem|kvm">А что такое PR? Я писал в список рассылки freebsd_geom, про /sys/dev/ata/ata-disk.c z
>тихо как в танке и вообще письма скипуют.Problem Report, отправить можно командой send-pr или через http://www.freebsd.org/send-pr.html
Посмотрел ata_alloc_request вызывает uma_zallocНашел по этому поводу тред http://lists.freebsd.org/pipermail/freebsd-hackers/2003-Marc...
>Можно попробовать капнуть в сторону kern.geom.stripe.debug и потюнить в kern.geom.stripe.*
>(kern.geom.stripe.maxmem). Плюс для UFS отключить atime и увеличить таймауты сброса meta-данных на
>диск.Ноль на массу. Выставил
kern.geom.stripe.maxmem: 67108864 (14М до этого было)
Выставил даже
vm.kmem_size: 1_073_741_824пробовал включать и выключать kern.geom.stripe.fast. До задницы. Даю нагрузку и по прежнему хватаю ata_alloc_request() failure
В общем, не знаю каким боком, но проблема возникает на ad* винтах при использовании geom_mirror, geom_stripe именно на платформе amd64.Я выставил vm.kmem_size_scale=2 в лоадере, проблема пропала. На амд64 по дефалту vm.kmem_size_scale=3