[SERVER-3733] Use profile guided optimization Created: 31/Aug/11  Updated: 02/Feb/24

Status: Backlog
Project: Core Server
Component/s: Performance
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Minor - P4
Reporter: Dwight Merriman Assignee: Unassigned
Resolution: Unresolved Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-14574 Enable LTCG & WPO on Windows Builders Closed
Assigned Teams:
Build
Participants:

 Description   

We should use pgo in general, regardless of compiler.

Also we should use latest visual studio for release builds that are pre-built. perhaps that should be a separate ticket. We'll want to keep a buildbot on 2008 and 2010 to verify build compatibility with those; best for that would be a DEBUG buildbot.



 Comments   
Comment by Alexander Zaitsev [ 19/Jun/23 ]

dwight@mongodb.com Recently I performed benchmarking MongoDB with PGO: https://github.com/zamazan4ik/awesome-pgo/blob/main/mongodb.md

Results are definitely worth seeing, I think. 

Comment by Dwight Merriman [ 25/Feb/14 ]

a long time ago I did this (linux):

// run each of regular and -fprofile-generate / -fprofile-user combo
// for "time ./test > foo".  then ran 3 times each.  here were the results:
 
	normal	guided	g/n
real	21.02	20.49	 0.97 
user	3.44	3.35	 0.97 
sys	2.22	1.88	 0.85 
			
real	19.64	19.42	 0.99 
user	3.61	3.53	 0.98 
sys	1.52	1.4	 0.92 
			
real	19.73	19.43	 0.98 
user	3.42	3.39	 0.99 
sys	1.82	1.41	 0.77 

i don't think "test" is exactly what we want. "test perf" would be better, and even better might be a test run that only runs the high-level tests at the end (finds, updates, etc.)

Comment by Eliot Horowitz (Inactive) [ 20/Jan/12 ]

We probably don't have the "right" suite for the optimization.
Lots of things, but might be wrong blend.

Comment by Andy Schwerin [ 19/Jan/12 ]

Does someone have a benchmark suite in mind to drive our optimizer? To use PGO, we're going to need to one for each to-be-optimized binary, and frankly I want one anyways, so we could measure the performance impacts of microoptimizations.

Presumably, we're only interested in squeezing performance out of mongod and mongos? And for mongos, presumably in its behavior as primary member of a shard replset?

Comment by Daniel Pasette (Inactive) [ 19/Jan/12 ]

eliot/dwight think this should be done using variant builds.

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