From 2fda5b305755ed887e146383a77c8d269c5dc337 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Tue, 9 Aug 2022 20:27:58 +0200 Subject: [PATCH 1/7] Fix performance issues after migration to sol2 3.3.0 --- include/extractor/extraction_relation.hpp | 4 ++++ src/extractor/scripting_environment_lua.cpp | 16 ++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/extractor/extraction_relation.hpp b/include/extractor/extraction_relation.hpp index 033aea8a1d2..2a58426a8d2 100644 --- a/include/extractor/extraction_relation.hpp +++ b/include/extractor/extraction_relation.hpp @@ -93,6 +93,10 @@ class ExtractionRelationContainer using RelationIDList = std::vector; using RelationRefMap = std::unordered_map; + ExtractionRelationContainer() = default; + ExtractionRelationContainer(ExtractionRelationContainer&&) = default; + ExtractionRelationContainer(const ExtractionRelationContainer&) = delete; + void AddRelation(ExtractionRelation &&rel) { rel.Prepare(); diff --git a/src/extractor/scripting_environment_lua.cpp b/src/extractor/scripting_environment_lua.cpp index 8e92ee5345d..284b47e230a 100644 --- a/src/extractor/scripting_environment_lua.cpp +++ b/src/extractor/scripting_environment_lua.cpp @@ -1093,7 +1093,7 @@ void Sol2ScriptingEnvironment::ProcessTurn(ExtractionTurn &turn) case 2: if (context.has_turn_penalty_function) { - context.turn_function(context.profile_table, turn); + context.turn_function(context.profile_table, std::ref(turn)); // Turn weight falls back to the duration value in deciseconds // or uses the extracted unit-less weight value @@ -1108,7 +1108,7 @@ void Sol2ScriptingEnvironment::ProcessTurn(ExtractionTurn &turn) case 1: if (context.has_turn_penalty_function) { - context.turn_function(turn); + context.turn_function(std::ref(turn)); // Turn weight falls back to the duration value in deciseconds // or uses the extracted unit-less weight value @@ -1159,14 +1159,14 @@ void Sol2ScriptingEnvironment::ProcessSegment(ExtractionSegment &segment) case 4: case 3: case 2: - context.segment_function(context.profile_table, segment); + context.segment_function(context.profile_table, std::ref(segment)); break; case 1: - context.segment_function(segment); + context.segment_function( std::ref(segment)); break; case 0: context.segment_function( - segment.source, segment.target, segment.distance, segment.duration); + std::ref(segment.source), std::ref(segment.target), segment.distance, segment.duration); segment.weight = segment.duration; // back-compatibility fallback to duration break; } @@ -1183,14 +1183,14 @@ void LuaScriptingContext::ProcessNode(const osmium::Node &node, { case 4: case 3: - node_function(profile_table, std::cref(node), result, relations); + node_function(profile_table, std::cref(node), std::ref(result), std::cref(relations)); break; case 2: - node_function(profile_table, std::cref(node), result); + node_function(profile_table, std::cref(node), std::ref(result)); break; case 1: case 0: - node_function(std::cref(node), result); + node_function(std::cref(node), std::ref(result)); break; } } From 9659ad797c1625d8937eb3d5283bf15a91aab838 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Tue, 9 Aug 2022 20:30:47 +0200 Subject: [PATCH 2/7] Fix performance issues after migration to sol2 3.3.0 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d5318344ebc..da5b50f1dc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -496,7 +496,7 @@ if(ENABLE_CONAN) set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY "${Boost_unit_test_framework_LIB_TARGETS}") find_package(BZip2 REQUIRED EXACT ${CONAN_BZIP2_VERSION}) - find_package(EXPAT REQUIRED EXACT ${CONAN_EXPAT_VERSION}) + find_package(EXPAT REQUIRED) find_package(lua REQUIRED EXACT ${CONAN_LUA_VERSION}) set(LUA_LIBRARIES ${lua_LIBRARIES}) From 524d64cb0b6e208e02db861891efee5e8af9e009 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Tue, 9 Aug 2022 20:31:38 +0200 Subject: [PATCH 3/7] Fix performance issues after migration to sol2 3.3.0 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2347d2102a8..b512aa378f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - API: - FIXED: Fix inefficient osrm-routed connection handling [#6113](https://github.com/Project-OSRM/osrm-backend/pull/6113) - Misc: + - FIXED: Fix performance issues after migration to sol2 3.3.0. [#6304](https://github.com/Project-OSRM/osrm-backend/pull/6304) - FIXED: Fix bug with reading Set values from Lua scripts. [#6285](https://github.com/Project-OSRM/osrm-backend/pull/6285) - Build: - CHANGED: Configure Undefined Behaviour Sanitizer. [#6290](https://github.com/Project-OSRM/osrm-backend/pull/6290) From 25e2279ebcfcbd66738334b6a9f9c64b2e462a11 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Tue, 9 Aug 2022 20:34:14 +0200 Subject: [PATCH 4/7] Fix performance issues after migration to sol2 3.3.0 --- include/extractor/extraction_relation.hpp | 4 ++-- src/extractor/scripting_environment_lua.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/extractor/extraction_relation.hpp b/include/extractor/extraction_relation.hpp index 2a58426a8d2..6c4203b75b4 100644 --- a/include/extractor/extraction_relation.hpp +++ b/include/extractor/extraction_relation.hpp @@ -94,8 +94,8 @@ class ExtractionRelationContainer using RelationRefMap = std::unordered_map; ExtractionRelationContainer() = default; - ExtractionRelationContainer(ExtractionRelationContainer&&) = default; - ExtractionRelationContainer(const ExtractionRelationContainer&) = delete; + ExtractionRelationContainer(ExtractionRelationContainer &&) = default; + ExtractionRelationContainer(const ExtractionRelationContainer &) = delete; void AddRelation(ExtractionRelation &&rel) { diff --git a/src/extractor/scripting_environment_lua.cpp b/src/extractor/scripting_environment_lua.cpp index 284b47e230a..2d0978d51f3 100644 --- a/src/extractor/scripting_environment_lua.cpp +++ b/src/extractor/scripting_environment_lua.cpp @@ -1162,11 +1162,13 @@ void Sol2ScriptingEnvironment::ProcessSegment(ExtractionSegment &segment) context.segment_function(context.profile_table, std::ref(segment)); break; case 1: - context.segment_function( std::ref(segment)); + context.segment_function(std::ref(segment)); break; case 0: - context.segment_function( - std::ref(segment.source), std::ref(segment.target), segment.distance, segment.duration); + context.segment_function(std::ref(segment.source), + std::ref(segment.target), + segment.distance, + segment.duration); segment.weight = segment.duration; // back-compatibility fallback to duration break; } From ce079f1d2b9543923979532e8cce50ff9ff3ef3a Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Tue, 9 Aug 2022 22:27:43 +0200 Subject: [PATCH 5/7] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b512aa378f6..755c839d784 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ - API: - FIXED: Fix inefficient osrm-routed connection handling [#6113](https://github.com/Project-OSRM/osrm-backend/pull/6113) - Misc: - - FIXED: Fix performance issues after migration to sol2 3.3.0. [#6304](https://github.com/Project-OSRM/osrm-backend/pull/6304) + - FIXED: Fix performance issue after migration to sol2 3.3.0. [#6304](https://github.com/Project-OSRM/osrm-backend/pull/6304) - FIXED: Fix bug with reading Set values from Lua scripts. [#6285](https://github.com/Project-OSRM/osrm-backend/pull/6285) - Build: - CHANGED: Configure Undefined Behaviour Sanitizer. [#6290](https://github.com/Project-OSRM/osrm-backend/pull/6290) From e0b27d315b7b9af10748ceca88bd896cf7ecb914 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Wed, 10 Aug 2022 22:00:01 +0200 Subject: [PATCH 6/7] Add CI for Docker --- .github/workflows/osrm-backend.yml | 10 ++++++++++ docker/Dockerfile | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/osrm-backend.yml b/.github/workflows/osrm-backend.yml index 5c96b7f5e58..ecc595e58ba 100644 --- a/.github/workflows/osrm-backend.yml +++ b/.github/workflows/osrm-backend.yml @@ -47,6 +47,16 @@ jobs: ./scripts/format.sh && ./scripts/error_on_dirty.sh node ./scripts/validate_changelog.js npm run docs && ./scripts/error_on_dirty.sh + + docker-image: + needs: format-taginfo-docs + runs-on: ubuntu-22.04 + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: Docker build + run: | + docker build -f docker/Dockerfile . build-test-publish: needs: format-taginfo-docs diff --git a/docker/Dockerfile b/docker/Dockerfile index fe0ee31ca5c..5c06dc8ea42 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,7 +10,8 @@ RUN apt-get update && \ COPY . /src WORKDIR /src -RUN NPROC=${BUILD_CONCURRENCY:-$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)} echo "Building OSRM ${DOCKER_TAG}" && \ +RUN NPROC=${BUILD_CONCURRENCY:-$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)} && \ + echo "Building OSRM ${DOCKER_TAG}" && \ git show --format="%H" | head -n1 > /opt/OSRM_GITSHA && \ echo "Building OSRM gitsha $(cat /opt/OSRM_GITSHA)" && \ mkdir -p build && \ From 0d7c2bb9b81a298de37e4c7efb9e8196e9b7ab66 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Wed, 10 Aug 2022 22:02:10 +0200 Subject: [PATCH 7/7] Revert "Add CI for Docker" This reverts commit e0b27d315b7b9af10748ceca88bd896cf7ecb914. --- .github/workflows/osrm-backend.yml | 10 ---------- docker/Dockerfile | 3 +-- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/osrm-backend.yml b/.github/workflows/osrm-backend.yml index ecc595e58ba..5c96b7f5e58 100644 --- a/.github/workflows/osrm-backend.yml +++ b/.github/workflows/osrm-backend.yml @@ -47,16 +47,6 @@ jobs: ./scripts/format.sh && ./scripts/error_on_dirty.sh node ./scripts/validate_changelog.js npm run docs && ./scripts/error_on_dirty.sh - - docker-image: - needs: format-taginfo-docs - runs-on: ubuntu-22.04 - steps: - - name: Check out the repo - uses: actions/checkout@v3 - - name: Docker build - run: | - docker build -f docker/Dockerfile . build-test-publish: needs: format-taginfo-docs diff --git a/docker/Dockerfile b/docker/Dockerfile index 5c06dc8ea42..fe0ee31ca5c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,8 +10,7 @@ RUN apt-get update && \ COPY . /src WORKDIR /src -RUN NPROC=${BUILD_CONCURRENCY:-$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)} && \ - echo "Building OSRM ${DOCKER_TAG}" && \ +RUN NPROC=${BUILD_CONCURRENCY:-$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)} echo "Building OSRM ${DOCKER_TAG}" && \ git show --format="%H" | head -n1 > /opt/OSRM_GITSHA && \ echo "Building OSRM gitsha $(cat /opt/OSRM_GITSHA)" && \ mkdir -p build && \