From c7739cfe47ea9099188580022a334e335e4b42ef Mon Sep 17 00:00:00 2001 From: Gregory Wlodarek Date: Wed, 6 Oct 2021 01:01:00 +0000 Subject: Revert "SERVER-58736 Add benchmark for CollectionCatalog::write()" This reverts commit 9ced8a4e161b258ed9090645065f330af65ee20b. --- src/mongo/db/catalog/SConscript | 11 --- src/mongo/db/catalog/collection_catalog_bm.cpp | 96 -------------------------- 2 files changed, 107 deletions(-) delete mode 100644 src/mongo/db/catalog/collection_catalog_bm.cpp diff --git a/src/mongo/db/catalog/SConscript b/src/mongo/db/catalog/SConscript index 4fc0369ef08..d43f19135ea 100644 --- a/src/mongo/db/catalog/SConscript +++ b/src/mongo/db/catalog/SConscript @@ -268,17 +268,6 @@ env.Library( ] ) -env.Benchmark( - target='collection_catalog_bm', - source=[ - 'collection_catalog_bm.cpp', - ], - LIBDEPS=[ - '$BUILD_DIR/mongo/db/concurrency/lock_manager', - 'collection_catalog', - ], -) - env.Library( target='collection_catalog_helper', source=[ diff --git a/src/mongo/db/catalog/collection_catalog_bm.cpp b/src/mongo/db/catalog/collection_catalog_bm.cpp deleted file mode 100644 index 2452f4f3a39..00000000000 --- a/src/mongo/db/catalog/collection_catalog_bm.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Copyright (C) 2021-present MongoDB, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the Server Side Public License, version 1, - * as published by MongoDB, Inc. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * Server Side Public License for more details. - * - * You should have received a copy of the Server Side Public License - * along with this program. If not, see - * . - * - * As a special exception, the copyright holders give permission to link the - * code of portions of this program with the OpenSSL library under certain - * conditions as described in each individual source file and distribute - * linked combinations including the program with the OpenSSL library. You - * must comply with the Server Side Public License in all respects for - * all of the code used other than as permitted herein. If you modify file(s) - * with this exception, you may extend this exception to your version of the - * file(s), but you are not obligated to do so. If you do not wish to do so, - * delete this exception statement from your version. If you delete this - * exception statement from all source files in the program, then also delete - * it in the license file. - */ - -#include - -#include "mongo/db/catalog/collection_catalog.h" -#include "mongo/db/catalog/collection_mock.h" -#include "mongo/db/concurrency/d_concurrency.h" -#include "mongo/db/concurrency/lock_state.h" -#include "mongo/db/operation_context.h" -#include "mongo/db/service_context.h" -#include "mongo/util/uuid.h" - -namespace mongo { - -namespace { - -ServiceContext* setupServiceContext() { - auto serviceContext = ServiceContext::make(); - auto serviceContextPtr = serviceContext.get(); - setGlobalServiceContext(std::move(serviceContext)); - return serviceContextPtr; -} - -void createCollectionsAndLocker(OperationContext* opCtx, int numCollections) { - for (auto i = 0; i < numCollections; i++) { - const NamespaceString nss("collection_catalog_bm", std::to_string(i)); - CollectionCatalog::write(opCtx, [&](CollectionCatalog& catalog) { - catalog.registerCollection(opCtx, UUID::gen(), std::make_shared(nss)); - }); - } - - stdx::lock_guard lk(cc()); - opCtx->swapLockState(std::make_unique(), lk); -} - -} // namespace - -void BM_CollectionCatalogWrite(benchmark::State& state) { - auto serviceContext = setupServiceContext(); - ThreadClient threadClient(serviceContext); - ServiceContext::UniqueOperationContext opCtx = threadClient->makeOperationContext(); - - createCollectionsAndLocker(opCtx.get(), state.range(0)); - - for (auto _ : state) { - benchmark::ClobberMemory(); - CollectionCatalog::write(opCtx.get(), [&](CollectionCatalog& catalog) {}); - } -} - -void BM_CollectionCatalogWriteWithGlobalExclusiveLock(benchmark::State& state) { - auto serviceContext = setupServiceContext(); - ThreadClient threadClient(serviceContext); - ServiceContext::UniqueOperationContext opCtx = threadClient->makeOperationContext(); - - createCollectionsAndLocker(opCtx.get(), state.range(0)); - - Lock::GlobalLock globalLk(opCtx.get(), MODE_X); - - for (auto _ : state) { - benchmark::ClobberMemory(); - CollectionCatalog::write(opCtx.get(), [&](CollectionCatalog& catalog) {}); - } -} - -BENCHMARK(BM_CollectionCatalogWrite)->Ranges({{{1}, {100'000}}}); -BENCHMARK(BM_CollectionCatalogWriteWithGlobalExclusiveLock)->Ranges({{{1}, {100'000}}}); - -} // namespace mongo -- cgit v1.2.1