1 of 1 people found this helpful
Actually the solution you find would be suitable for both intel and amd based systems there is no proessor based syntax. It is the operating system which does scheduling. However, still the answer depends on what creates the threads you mention. If your code is using OpenMP, then there may be some implementation dependent environment variables, such as KMP_AFFINITY for intel compiler or GOMP_CPU_AFFINITY if gnu compiler is used.
You may want to explore something like this, but it wouldnt be practical to use at every lunch I guess, but perhaps for testing your theory...:
Or this if you are able to use it from your code:
I dont know what is gauss or how your program is creating threads so I have no idea about what is the correct answer unfortunately.
To answer your question about the system time, this greatly depends on what was your system doing exactly when it was spending 15% of the time. For example it could have been fetching something from disk then this data was cached in memory after a run so it did not appear on next run (although this doesnt completely explain random spikes, unless some other program/daemon was making the system busy in these times).
I guess you may try to profile your code to see where the time was spend in those cases where 15% was used and compare it with a profiling output where system time is 0%
You may be able to use CodeXL: