[SERVER-14818] Cpp test to measure FileAllocator performance Created: 07/Aug/14  Updated: 08/Sep/14  Resolved: 21/Aug/14

Status: Closed
Project: Core Server
Component/s: Testing Infrastructure
Affects Version/s: None
Fix Version/s: 2.7.6

Type: Improvement Priority: Minor - P4
Reporter: Matt Kangas Assignee: Adam Midvidy
Resolution: Done Votes: 0
Labels: community-team, pull-request
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
is related to SERVER-14588 prealloc of datafiles not on by defau... Closed
Backwards Compatibility: Fully Compatible
Sprint: Server 2.7.5, Server 2.7.6
Participants:

 Description   

Our FileAllocator performance and behavior varies greatly by platform and OS version, but we don't have a good way to measure the impact of proposed changes.

Let's build a (new-style) C++ unit test that directly exercises the FileAllocator and measures the time to allocate small, medium, and large files. We probably should run each variant three times and average the results.



 Comments   
Comment by Githook User [ 25/Aug/14 ]

Author:

{u'username': u'amidvidy', u'name': u'Adam Midvidy', u'email': u'amidvidy@gmail.com'}

Message: SERVER-14818 make file allocator exception safe, and print error if we run out of disk space

Closes #757

Signed-off-by: Benety Goh <benety@mongodb.com>
Branch: master
https://github.com/mongodb/mongo/commit/735b528437eb4042dcc92f2d8f2a55c30176b5d0

Comment by Githook User [ 22/Aug/14 ]

Author:

{u'username': u'kangas', u'name': u'Matt Kangas', u'email': u'matt.kangas@mongodb.com'}

Message: SERVER-14818 disable file_allocator_bench suite too big for MCI
Branch: master
https://github.com/mongodb/mongo/commit/f7d36a2f36f0239806b173f02f2ce8c5d4c453df

Comment by Githook User [ 21/Aug/14 ]

Author:

{u'username': u'kangas', u'name': u'Matt Kangas', u'email': u'matt.kangas@mongodb.com'}

Message: SERVER-14818 save file_allocator_bench to BUILD_ROOT

So we don't need to touch .gitconfig or clutter a repo root.
Adapt and simplify perf_suite.py runner.
Branch: master
https://github.com/mongodb/mongo/commit/2bf24b1bd81ee6739acbe088455db26a2cdb0cb5

Comment by Githook User [ 20/Aug/14 ]

Author:

{u'username': u'amidvidy', u'name': u'Adam Midvidy', u'email': u'amidvidy@gmail.com'}

Message: SERVER-14818 Add cpp benchmark to measure FileAllocator performance.
Needed to measure differences in allocation speed across platforms.
Included is a python script to run the benchmark with different file
sizes and write the results as json to a timestamped directory.
Branch: master
https://github.com/mongodb/mongo/commit/c18aa8e2560b266bf5806310d67a7f2bed2d43d3

Comment by Githook User [ 18/Aug/14 ]

Author:

{u'username': u'mpobrien', u'name': u"mike o'brien", u'email': u'mpobrien005@gmail.com'}

Message: Revert "SERVER-14818 Add cpp benchmark to measure FileAllocator performance."

This reverts commit d8612542111d9af6b99c5f6ad3cd8e0c4b43cea1.
Branch: master
https://github.com/mongodb/mongo/commit/e1f14a9387f4a0e96039eb7cd1cb1273bac3e86a

Comment by Githook User [ 18/Aug/14 ]

Author:

{u'username': u'amidvidy', u'name': u'Adam Midvidy', u'email': u'amidvidy@gmail.com'}

Message: SERVER-14818 Add cpp benchmark to measure FileAllocator performance.

Needed to measure differences in allocation speed across platforms.
Included is a python script to run the benchmark with different file
sizes and write the results as json to a timestamped directory.

Closes #750
Signed-off-by: Matt Kangas <matt.kangas@mongodb.com>
Branch: master
https://github.com/mongodb/mongo/commit/d8612542111d9af6b99c5f6ad3cd8e0c4b43cea1

Comment by Michael O'Brien [ 08/Aug/14 ]

matt.kangas@10gen.com re: running this stuff in MCI
which OSes/variants do we want to start collecting this data from?

i am guessing that hardware will be a dominating factor in the file allocator performance measurements? It sounds like this is best suited for the CAP project on MCI since that is configured to run only on static hardware with consistent disk configurations. However, CAP only runs on linux for now.

Comment by Andy Schwerin [ 07/Aug/14 ]

Rather than a C++ unit test, a stand-alone C++ program might be better. These performance benchmarks won't "fail" or "pass", but rather produce data points that we'll aggregate into some performance database, to plot into graphs, right? We don't have a performance benchmarking framework right now, so a well structured stand-alone C++ program might be a better choice.

Separately, we'll also need a design for a repository of performance output (maybe alvin knows of a project on this already), and a mechanism to easily submit results to the database. That separate project is actually somewhat more complicated.

Generated at Thu Feb 08 03:36:04 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.