CPU benchmark advice

Fragment of a discussion from User talk:Voidious
Jump to navigation Jump to search

Why would it use 200%? According to Pavel, different robots can run on different cores, but they are synchronized so only one is running at once, basically capping your actual performance at the speed of one core. So it should be 100% + some JVM / Robocode engine overhead, I'd think.

Voidious21:22, 3 June 2012

That overhead happens about 30% of the time, so an instance uses about 130% cores average. But there are peaks of 200%. When I run 3 instances on 4 cores, they use all cores most of the time, but you see one idle core sometimes (and it´s not uploading).

When running test beds, I run one instance per core (and disable turn skipping), so all cores are used all of the time.

Running a benchmark restricting each instance to a single core would remove that parallel overhead.

MN01:00, 4 June 2012

If I had to guess... I'd guess that the peaks would be the JVM garbage collection because that does happen in bursts, and does run in it's own thread(s) independent of whatever java code is running.

Rednaxela02:21, 4 June 2012

Can also be the JIT compiler, which compiles code in parallel by default. It activates at least once for each new battle.

MN03:53, 4 June 2012