OSM 맵 타일 최적화 과정

KIM YONG GU·2023년 12월 18일

OSM

목록 보기
3/8

osm2pgsql "--Flat-nodes"를 사용한다면 32GB RAM이면 괜찮을 것입니다. RAM에 저장하는 대신 중간 노드 데이터를 디스크에 저장하는 옵션입니다.

저는 최근 16GB RAM Core i7 HQ Windows 10 노트북에 유럽 전체를 로드하여 PostgreSQL 및 osm2pgsql을 실행하는 Oracle Virtual Box Ubuntu 시스템에 12GB만 할당하고 VM용으로 2x 500GB의 가상 디스크 공간을 할당했습니다. 초기 유럽 가져오기는 그보다 훨씬 작으므로 일부 구체화된 보기에 추가 공간을 사용합니다.

여기에 이에 대해 썼습니다. https://forum.openstreetmap.org/viewtopic.php?id=62495

유럽은 행성의 1/3에서 1/2 사이에 있으므로 "--플랫 노드"를 사용하면 동일한 설정으로 행성을 가져올 수도 있다고 이제 거의 100% 확신합니다.

Frederik이 권장하는 SSD가 필요하다는 점을 기억하세요. 내 것은 2TB Samsung EVO 드라이브입니다. "--drop"을 사용한 가져오기 옵션도 업데이트가 필요하지 않기 때문에 단 17시간 만에 완료되었습니다.

게시물에서도 제가 추천한 것처럼 osm2pgsql 명령줄을 가능한 한 단순하게 유지하고 "-C"를 사용하지 마세요. 캐시 옵션 또는 "--number_processes" 나처럼 제한된 시스템을 실행하는 경우 매개 변수입니다. 최적의 처리 설정을 파악하려면 osm2pgsql에 맡기십시오.

출처링크 https://help.openstreetmap.org/questions/64405/tile-server-hardware-requirements

flat-nodes를 생성하는 쿼리
sudo -u _renderd osm2pgsql -d gis --create -G --hstore-all -W -l --slim --flat-nodes ~/data/nodes.bin --drop --style ~/src/openstreetmap-carto/openstreetmap-carto.style --tag-transform-script ~/src/openstreetmap-carto/openstreetmap-carto.lua ~/data/korea-latest-non-military.osm.pbf

해당 내용이 포함된 커뮤니티 유저의 권장 쿼리
osm2pgsql -d <YOUR_DATABASE_NAME> -U <YOUR_DATABASE_USERNAME> --create -G --hstore-all -W -l --slim --drop --flat-nodes 'data/nodes.bin' --style 'src/openstreetmap-carto/openstreetmap-carto.style' --tag-transform-script 'src/openstreetmap-carto/openstreetmap-carto.lua' 'data/korea-latest-non-military.osm.pbf'

단, 이 때

touch /home/ubuntu/data/nodes.bin

명령어 입력을 통해 or+x 권한을 가진채로 파일을 생성하고.

chmod o+rwx /home/ubuntu/data/nodes.bin

읽기, 쓰기, 실행 권한을 모두 추가하여 다른 사용자들이 해당 파일을 읽고 쓰며 실행할 수 있게 한다. 중간에 패스워드 입력창이 뜨긴 하지만 아무값이나 입력하면 스킵되어 설치된다.

중간 결과 27630K 노드일 때 약 80기가로 라이트세일 20달러 모델은 사용할 수 없고

40달러 모델을 인스턴스를 재생성해 테스트 실시.
테스트 결과 37454K 노드로 약 91GB의 용량을 차지하며 플랫 노드작업 완료.

잠깐 재미있는 사실은 유럽의 영토는 한국의 100배 크기이고, 내 작업이 10분정도 걸렸다고 가정했을때 유럽은 1000분 정도 노드 추출이 이루어질 것이고... 시간으로 환산하면 17시간 정도이다. 커뮤니티에서 어떤 유저가 언급한 노드 추출 시간이 약 17시간 정도라는건 우연의 일치가 아니인듯

음... 위의 경우가 맵타일 미리 불러오기를 의미하는 것은 아닌것 같다. 맵타일 미리 불러오기와 관련된 기능을 확실히 확인할 필요가 있음.

osm2pgsql 에서 램의 값이 커질수록 Node를 다운하는 속도도 훨씬 빨라짐... 이게 곧 렌더링에서의 노드를 로드하는 속도와 연관된 것일까?

CPU가 한개라서 프로세스 1개에 대한 응답과 요청을 보내기 때문인가...?

profile
Engineer, Look Beyond the Code.

0개의 댓글