Re: Сколько дней ждать osm2pgsql ?
Добавлено: 27 дек 2011, 05:46
Целый месяц я потратил на подбор оптимальных параметров для osm2pgsql и делюсь своими наблюдениями:
Какой нужен процессор - любой 2-х ядерный. При конвертации работает только диск.
Сколько нужно памяти - от 4Гб.
osm2pgsql очень лояльно относится к свопу, поэтому без боязни запускаемБольше 16Gb кэша отдавать osm2pgsql не надо - этого достаточно
Из вышеприведеного наблюдения получается что нужно создать кэш на 16Gb. На FreeBSD нужно подкручивать параметр kern.maxswzone. По умолчанию kern.maxswzone="32M", что хватает для 7 Гб свопа (по разным оценкам в инете). Значит этот параметр нужно увеличить до 96Мб
Все бенчмарки в Инете и мой опыт говорят, что без SSD совсем туго. Какого объема нужен SSD - 256Gb минимальный размер, так как база на данный момент занимает поряда 240Gb.
При этом на SSD выделяем 16Гб для SWAP файла.
Как сэкономить место на диске - можно включить компрессию ZFS. Компрессия может увеличить время работы программы раза в 1,5..2 (но не в 10).
Базу нужно размещать на SSD, т.к. финт со свопом PostgreSQL не воспринимает. При построении индексов PostgreSQL создает такой рандомный акцесс к диску, что никакой кэш не помогает (я выделял ZFS 40Гб SSD кэша - не помогло).
PostgreSQL можно затюнить: Этот параметр регламентирует объем памяти, который PostgreSQL может задействовать для служебных целей, например, для построения индексов. В нашем случае имеет смысл отдать от 50% до 75% RAM.
Если SWAP разместить на SSD, а базу на SATA, работать конвертация будет 4 суток. Если все разместить на SSD - думаю, что за 2 суток точно справится.
Какой нужен процессор - любой 2-х ядерный. При конвертации работает только диск.
Сколько нужно памяти - от 4Гб.
osm2pgsql очень лояльно относится к свопу, поэтому без боязни запускаем
Код: Выделить всё
time bzcat /home/PlanetOSM/planet-111214.osm.bz2 | osm2pgsql -d gis -m -s -U gis -C 16384 -H localhost /dev/stdin
Из вышеприведеного наблюдения получается что нужно создать кэш на 16Gb. На FreeBSD нужно подкручивать параметр kern.maxswzone. По умолчанию kern.maxswzone="32M", что хватает для 7 Гб свопа (по разным оценкам в инете). Значит этот параметр нужно увеличить до 96Мб
Код: Выделить всё
/boot/loader.conf
kern.maxswzone="96M"
reboot
При этом на SSD выделяем 16Гб для SWAP файла.
Как сэкономить место на диске - можно включить компрессию ZFS. Компрессия может увеличить время работы программы раза в 1,5..2 (но не в 10).
Базу нужно размещать на SSD, т.к. финт со свопом PostgreSQL не воспринимает. При построении индексов PostgreSQL создает такой рандомный акцесс к диску, что никакой кэш не помогает (я выделял ZFS 40Гб SSD кэша - не помогло).
PostgreSQL можно затюнить:
Код: Выделить всё
maintenance_work_mem = 2048Gb # min 1MB
Если SWAP разместить на SSD, а базу на SATA, работать конвертация будет 4 суток. Если все разместить на SSD - думаю, что за 2 суток точно справится.