06.05.2011 10:49
OlegON
 
Итак, решил воспользоваться возможностями Linux по заточке под разные задачи.
1. Сервер БД Oracle. Я его особо не админил, поэтому единственное, что поменял
Цитата:
echo noop > /sys/block/sd*/queue/scheduler
там какая-то умная библиотека-рейд, положился на ее ум. Особого прироста производительности не заметил, но дисковые операции стали значительно меньше жрать процовых ресурсов. Процы там не очень и я получил некий резерв их мощности. Суть вышеприведенной операции - отключение i/o scheduler, т.е. за запись отвечает умная железка. Для многих серверов это не подойдет, но где подойдет - лучше бы включить.
2.Домашний десктоп (4Гб ОЗУ). Суть - быстрый отклик в приложениях. Общая пропускная способность не столь важна. Главное, чтобы я быстро получал результат в текущем приложении. Вот типовое решение, т.е. как сделано у меня и как мне нравится (можно включать шаги по отдельности):
в ядре:
Цитата:
Location:
-> Processor type and features
Preemption Model (Preemptible Kernel (Low-Latency Desktop))
Цитата:
Location:
-> Processor type and features
Timer frequency (1000 HZ)
Цитата:
Location:
-> Enable the block layer (BLOCK [=y]) -> IO Schedulers
Default I/O scheduler (CFQ)
в sysctl.conf
Цитата:
vm.swappiness = 5
vm.dirty_background_ratio = 40
vm.dirty_ratio = 50
т.е. минимальный своп, обеспечивающий возможность быстро переключиться на приложение, даже если оно давно бездействовало, быстрый отклик в ущерб общей производительности. Т.е. десктоп, как его понимаю я сам.
3.Эллочка. Подаренный на день рождения неттоп (2Гб ОЗУ), маленькая коробочка, где сейчас живут прокси, оптимизатор, Эллочка из конференции, джаббер с аськой и сам форум в виде mysql, апача и nginx с php. Суть оптимизации - сервер приложений. Учитывая "помоечность", т.е. набитость приложениями, необходимо было обеспечить большую тягу к свопу, чтобы обеспечить работающим приложениям и кешу свободную память. Одновременно с этим необходимо было снизить нагрузку на винт и максимизировать использование памяти при дисковых операциях, чтобы обеспечить серверу долгую жизнь на одном винте без рейда. Т.е. общая тенденция - все в кеш и не дергать винт по каждому запросу. Запросов много, каждую секунду кто-то что-то хочет от веб-сервера. Ну и не хотелось бы, чтобы это все тормозило, только в отличие от предыдущего варианта с десктопом тут нужна максимальная производительность в целом, а не быстрый отклик. Итак:
в ядре:
Цитата:
Location:
-> Processor type and features
Preemption Model (No Forced Preemption (Server))
Цитата:
Location:
-> Processor type and features
Timer frequency (250 HZ)
Цитата:
Location:
-> Enable the block layer (BLOCK [=y]) -> IO Schedulers
Default I/O scheduler (Deadline)
в sysctl.conf
Цитата:
vm.swappiness = 100
vm.dirty_background_ratio = 70
vm.dirty_ratio = 80
vm.dirty_writeback_centisecs = 20000
vm.dirty_expire_centisecs = 20000
vm.vfs_cache_pressure=1000
пока все работает и как надо...
18.06.2011 03:08
NGhost
 
Ну для серверов БД я еще указыаю:

1. net.core.netdev_max_backlog - собственно размер backlog не рекомендую ставить много больше, чем максимальное количество соединений к базе.

2. net.ipv4.tcp_tw_reuse=1 - переиспользование сокетов, позволяет сохранить тики процессора и память на нагруженных серверах.

3. net.ipv4.ip_forward=0 - отключить форвардинг пакетов.

А вообще по настройке системы под Oracle есть мануаль от шапки:

Советов много, но требует осознания написаного.
02.07.2011 23:26
OlegON
 
упустил из виду
Цитата:
Максимальное число открытых сокетов, ждущих соединения
net.core.somaxconn
буду проверять, вполне возможно, что значения по умолчанию (128) недостаточно для форума+оптимизатор
06.07.2011 00:28
NGhost
 
Возможно,
Но все зависит от архитектуры. Этот параметр описывает максимальное число открытых сокетов, ждущих соединения. Например у меня на балансировщиках нагрузки для Web (~10K запросов в секунду) так:
net.core.somaxconn = 512
net.core.netdev_max_backlog = 4000
06.07.2011 04:25
OlegON
 
Интересно, есть какая-то методика для подсчета этих параметров на новых ядрах?
24.04.2012 08:04
OlegON
 
В общем, на Эллочке пока оставил так:

Цитата:
box etc # sysctl -p
kernel.panic = 3
vm.swappiness = 1
net.ipv4.tcp_low_latency = 0
net.ipv4.ip_forward = 1
net.ipv4.tcp_orphan_retries = 2
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.ipv4.tcp_rmem = 4096 87380 12115424
net.ipv4.tcp_wmem = 4096 87380 12115424
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_reuse = 1
vm.overcommit_memory = 1
fs.file-max = 131070
vm.vfs_cache_pressure = 100
vm.dirty_background_ratio = 70
vm.dirty_ratio = 70
vm.dirty_writeback_centisecs = 180000
vm.dirty_expire_centisecs = 180000
нашел интересную доку со ссылкой на
Одно проблема - вроде бы как в последних ядрах многие параметры автотюнятся, поэтому старые доки устарели :(
Часовой пояс GMT +3, время: 13:08.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.