OSRM проблемы.

Решил я поднять OSRM и даже автоматизировал это процесс : https://github.com/saintbyte/install_osrm_ubuntu14_x64

но проблема в чем у меня osrm-extract - работает 5 часов и Killed
kern.log появляется вот такое:

Oct 12 00:35:20 osrmgen kernel: [24550.363980] osrm-extract invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
Oct 12 00:35:20 osrmgen kernel: [24550.364018]  [<ffffffff81151ebe>] oom_kill_process+0x1ce/0x330
Oct 12 00:35:20 osrmgen kernel: [24550.364251] Out of memory: Kill process 11399 (osrm-extract) score 937 or sacrifice child
Oct 12 00:35:20 osrmgen kernel: [24550.368228] Killed process 11399 (osrm-extract) total-vm:7400216kB, anon-rss:6886144kB, file-rss:0k

запускаю так: nice -n -10 osrm-extract -p profile.lua -t 4 planet_osm.osm.pbf

в .stxxl такая настройка:
echo “disk=/mnt/sdb1/osrm_tmp_file,36000,syscall”

в /etc/sysctl.conf
kernel.shmall=1152921504606846720
kernel.shmmax=18446744073709551615

planet_osm.osm.pbf - 25GB

Памяти - 14 гигов и 8 ядер.

Может кто-нить сталкивался с подобными проблемами?

У меня возникала аналогичная проблема. Для нормальной работы нужно, чтобы swap превышал объем оперативной памяти как минимум в 2 раза.

Ок попробую 28 гиг памяти :)))

Пробывал на 3.5 гигах - там почти сразу Killed

Пробывал на 56 гигах и 16 ядрах - там начинался [STXXL-ERRMSG] External memory block allocation error: 2097152 bytes requested, 0 bytes free. Trying to extend the external memory space…
потом выяснил на более мелких конфигурациях что лечиться это вот так:

Нашел вот такое интересное средство :

There is also a special value of -17, which disables oom_killer for that process. In the example below, oom_score returns a value of O, indicating that this process would not be killed.

# echo -17 > /proc/12465/oom_adj

Отсюда: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Swapping_and_Out_Of_Memory_Tips.html

Пробую.

Пока падает где-то на 2000 секундах процессорного времени,запустил на специально выделенном сервере - единственный процесс который что-то делает .

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2108 root       1 -19 3353384 2.475g   4632 S 663.9 18.1 681:50.18 osrm-extract

В конце 2013 года для планеты впритык хватало 32 Gb RAM и 25 Gb временного файла STXXL.
https://github.com/Project-OSRM/osrm-backend/issues/793
https://github.com/Project-OSRM/osrm-backend/issues/795

В вики пишут о 35 Gb RAM:
https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM

А чтобы было еще и быстро, лучше 120 Gb RAM, 100 Gb swap и 150G Gb под временные файлы на SSD :slight_smile:

Да вроде не такие страшные цены:

в MS azure
D14 16 112,00 ГБ 800 GB 53,44 РУБ/ч (~39 743,55 РУБ/мес.)

Digital Ocean
High Volume Plans 64GBMemory 20 CoreProcessor 640GBSSD Disk 9TBTransfer $ 0.952 / hr

Amazon Ec2
vCPU ECU Memory (GiB) Instance Storage (GB) Linux/UNIX Usage
r3.4xlarge 16 52 122 1 x 320 SSD $1.400 per Hour
r3.8xlarge 32 104 244 2 x 320 SSD $2.800 per Hour
i2.4xlarge 16 53 122 4 x 800 SSD $3.410 per Hour
i2.8xlarge 32 104 244 8 x 800 SSD $6.820 per Hour
hs1.8xlarge 16 35 117 24 x 2048 $4.600 per Hour

Да, для нечастых запусков облако-самое то. А роутингу так много памяти уже не нужно.
А уж если хочется ежедневного/несколько раз в неделю делать обновления - придётся организации потратить 60-90 тыр. на память :slight_smile:
(не дома же планету маршрутизировать!)

Для России и окрестностей требования в разы скромнее.

Сделал так echo -17 > /proc/12465/oom_adj
Но пришел omm у убил родителя bash - и все опять встало :))))

Планету победить не удалось :((( Стало просто завершать просто так - магия .
Сделал только Россию (в только хз с Крымом или нет :slight_smile: ).

[info] Parsing finished after 8867.33 seconds
[extractor] Sorting used nodes        ... ok, after 8.039s
[extractor] Erasing duplicate nodes   ... ok, after 3.586s
[extractor] Sorting all nodes         ... ok, after 105.891s
[extractor] Sorting used ways         ... ok, after 2.632s
[extractor] Sorting restrictions. by from... ok, after 0.063s
[extractor] Fixing restriction starts ... ok, after 0.743s
[extractor] Sorting restrictions. by to  ... ok, after 0.063s
[extractor] Fixing restriction ends   ... ok, after 0.11s
[info] usable restrictions: 32816
[extractor] Confirming/Writing used nodes     ... ok, after 106.938s
[extractor] setting number of nodes   ... ok
[extractor] Sorting edges by start    ... ok, after 41.637s
[extractor] Setting start coords      ... ok, after 123.954s
[extractor] Sorting edges by target   ... ok, after 41.39s
[extractor] Setting target coords     ... ok, after 164.886s
[extractor] setting number of edges   ... ok
[extractor] writing street name index ... ok, after 0.03s
[info] Processed 15922548 nodes and 17011252 edges
[info] extraction finished after 9467.71s
[info] To prepare the data for routing, run: ./osrm-prepare /mnt/sdc1/RU.osrm

Память 14 гиг, 8 ядер. Короче A4 в MS Azure

Вот так получилось по объему:


-rw-r--r-- 1 root root  31G Oct 10 11:33 RU.osm
-rw-r--r-- 1 root root 714M Oct 13 09:16 RU.osrm
-rw-r--r-- 1 root root 2.1M Oct 13 09:16 RU.osrm.names
-rw-r--r-- 1 root root 513K Oct 13 09:08 RU.osrm.restrictions

Если РФ с гислаба - то без крыма.

Сколько нужно времени чтобы собрать OSRM файл из planet-latest маршруты автомобильные? У меня Core i7 Raid 5 SSD из 500 гб пяти дисков и 32 ГБ ОЗУ. Уже два дня показывает загрузку диска и что то делает… И подскажите пожалуйста, когда я получу набор файлов после концигурации, смогу ли я их перенести на другой комп с настроенным OSRM, просто положив файлы в папку с картами и прописав новое имя файла OSRM, можно ли перенести файлы в винду и потом назад в новый комп с убунтой или нужно через архив с сохранением аттрибутов… При osrm-extract и osrm-prepare я так понимаю идёт лишь конвертация, кроме создания файлов в папке с картой ничего не происходит? Если вопросы не по адресу или их нужно выделить в отдельную тему, напишите пожалуйста! Заранее большое спасибо!!!

Боюсь 32 гигов вам хватит только на Россию :slight_smile: Но вдруг - попробуйте расскажете как прошло .
Поставьте nice -20, oom killer’ом разберитесь и попробуйте - вдруг получится.

Да вроде нет, пол года где-то назад была аналогичная тема, там указывалось, что на планету нужно около 30Гб.
И да, по идеи файлы можно будет забрать на более простой сервер после генерации.

Если не затруднит, напишите пожалуйста подробнее про nice -20, oom killer’ом
Я подключил огромный swap на всякий случай

А нужно их в архив складывать или можно просто в shared windows папку скинуть, а то я сталкивался когда атрибуты теряются и проблемы появляются))

Тут в теме все описано
nice -20 - Дает realtime приоритет задаче,
oom killer - это механизм который не дает программе сожрать всю память сразу. Обходится так echo -17 > /proc/12465/oom_adj где 12465 пид процесса

Спасибо! У меня уже неделю идёт osrm-prepare нагрузка на диск постоянно меняется, то есть с виду работает, но сколько этот процесс ещё может /должен продолжаться?

На данный момент спустя 2 недели(перед этим не хватила ИБП :frowning: ) процесс сутки весит на вот этом месте, подскажите пожалуйста какой это ориентировочно процент от общего выполнения?

Попробуй распилить по частям света и так генерить , что сети дорог между америкой и евразией нет

Насколько я понял, можно только один osrm файл маршрутов использовать одновременно, а сшивать их я не умею, мне нужна Россия и соседние регионы, а пришлось делать планету, вот