Небольшой апгрейд
Было:
2 x Intel(R) Xeon(TM) Dual CPU 3.00GHz
2G RAM
FAST-160 WIDE SCSI 320.0 MB/s DT IU RTI
Gentoo 2006 i386 SMP HTT, cfq io scheduler
Стало:
Тоже самое, только
4G RAM
Gentoo 2006 amd64 SMP HTT, deadline io scheduler
CFLAGS="-O2 -pipe -march=nocona"
Разница в производительности mysql пожалуй минимум раза в два быстрее.
Было очень активное обращение к винчестеру на чтение, очень большие таблицы. % io wait был очень высок, т.к. процессор постоянно ждал данных от винчестера. LA было около 2.5-3 обычное.
Выигрыш в производительности получился за счет:
- Увеличения объема памяти:
База занимает около 4 гигабайт. Памяти на машине было 2. Из них 1 гигабайт занимал сам процесс mysqld. Оставался 1 гигабайт на кеш
После увеличения объема памяти под кеш стало доступно 3 гигабайта.
Mem: 4052136k total, 4016616k used, 35520k free, 168860k buffers, 2766228k cached
Почти половина базы сейчас сидит в памяти - Переход системы на архитектуру amd64. На архитектуре 32бит линукс использовал извраты чтобы добраться до памяти выше 800М. Теперь же он к любой странице памяти обращается одинаково быстро
- Компиляция mysqld в режиме 64 бит. "-march=nocona" дает команду GCC подстроить код под архитектуру EMT64 данного процессора. Чем конкретно это выигрышно я точно не знаю, подозреваю что операции ввода-вывода должны дать прирост быстродействия.