From ebe407e79fd666f8c61cc23f99a7e4b31ac344e1 Mon Sep 17 00:00:00 2001 From: wangxiaotian22 Date: Thu, 14 Jan 2021 16:31:26 +0800 Subject: [PATCH] gensessionid add pid prefix --- .../load/new_model_manager/model_manager.cc | 18 ++++++++++---- tests/depends/mmpa/src/mmpa_stub.cc | 5 ++++ ...el_manager_model_manager_aicpu_unittest.cc | 24 +++++++++++++++++++ 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/ge/graph/load/new_model_manager/model_manager.cc b/ge/graph/load/new_model_manager/model_manager.cc index e73c0a36..edc60e50 100755 --- a/ge/graph/load/new_model_manager/model_manager.cc +++ b/ge/graph/load/new_model_manager/model_manager.cc @@ -18,6 +18,7 @@ #include +#include "mmpa/mmpa_api.h" #include "aicpu/aicpu_schedule/aicpu_op_type_list.h" #include "common/dump/dump_manager.h" #include "common/l2_cache_optimize.h" @@ -53,7 +54,6 @@ const char *const kBatchLoadBuf = "batchLoadsoFrombuf"; const char *const kDeleteCustOp = "deleteCustOp"; const int kTimeSpecNano = 1000000000; const int kTimeSpecMiro = 1000000; -const int kSessionMaxBias = 100; const int kOpNameMaxSize = 100; struct CustAicpuSoBuf { uint64_t kernelSoBuf; @@ -1023,6 +1023,12 @@ Status ModelManager::GetAippType(uint32_t model_id, uint32_t index, InputAippTyp } Status ModelManager::GenSessionId(uint64_t &session_id) { + const uint64_t kSessionTimeMask = 0xffffffffffff0000; + const uint64_t kSessionPidMask = 0x000000000000ff00; + const uint64_t kSessionBiasMask = 0x00000000000000ff; + + const uint64_t kMaskPerOffset = 8; + std::lock_guard lock(session_id_create_mutex_); mmTimeval tv; @@ -1030,12 +1036,14 @@ Status ModelManager::GenSessionId(uint64_t &session_id) { GELOGE(INTERNAL_ERROR, "Failed to get current time."); return INTERNAL_ERROR; } - session_id = static_cast(tv.tv_sec * kTimeSpecMiro + tv.tv_usec); // 1000000us + uint64_t timestamp = static_cast(tv.tv_sec * kTimeSpecMiro + tv.tv_usec); // 1000000us + + static uint32_t pid = mmGetPid(); session_id_bias_++; - // max bais 100. - session_id_bias_ = session_id_bias_ % kSessionMaxBias; - session_id = session_id * kSessionMaxBias + session_id_bias_; + + session_id = ((timestamp< #include +#include +#include #include "common/debug/log.h" #include "common/l2_cache_optimize.h" @@ -75,4 +77,26 @@ TEST_F(UtestModelManagerModelManagerAicpu, DestroyAicpuKernel) { // EXPECT_EQ(ge::FAILED, mm.LoadModelOffline(model_id, data, nullptr, nullptr)); } +// test GenSessionId +TEST_F(UtestModelManagerModelManagerAicpu, gen_session_id) { + ModelManager manager; + uint64_t session_id; + manager.GenSessionId(session_id); + + struct timeval tv; + gettimeofday(&tv, nullptr); + uint64_t timestamp = static_cast(tv.tv_sec * 1000000); + + const uint64_t kSessionTimeMask = 0xfffffff000000000; // 不比us + const uint64_t kSessionPidMask = 0x000000000000ff00; + const uint64_t kSessionBiasMask = 0x00000000000000ff; + + uint32_t pid = getpid(); + + EXPECT_EQ(1, kSessionBiasMask & session_id); + EXPECT_EQ(pid<<8 & kSessionPidMask, kSessionPidMask & session_id); + //EXPECT_EQ(timestamp<<16 & kSessionTimeMask, kSessionTimeMask & session_id); +} + + } // namespace ge