Paul A schreef op do 29-01-2015 om 19:39 [-0500]:
Facets appear to have a huge overhead in various components of Zebra, to the point where a single core of a multiple processor CPU gets overwhelmed, but does not share the load with other totally idle cores.
That's not how multiprocessor systems work. They can only spread load amongst other cores if the software is multithreaded/multiprocess, which I suspect zebra isn't, at least within a single request. If it does all its work in a single thread, then it can't spread across multiple cores.
Intel tell me that this is not fixable through any hardware/BIOS config and they are not aware of a Linux "standard library" that deals with processor affinity. I've searched around a little and found mentions for c and FORTRAN (marvelous old memories for me!) but so far nothing totally specific for Perl.
Zebra is not Perl, zebra is (I think) C. But still, unless it's written with multithreading in mind, you can't do anything about it.
taskset and sched_setaffinity might be usable at system level
Unless you have very specific use cases (which you don't), these won't help.
, and I might have a look at pthread_setaffinity_np.3.gz
That will only help if you plan on rewriting zebra to use pthreads. I don't recommend rewriting zebra. -- Robin Sheat Catalyst IT Ltd. ✆ +64 4 803 2204 GPG: 5FA7 4B49 1E4D CAA4 4C38 8505 77F5 B724 F871 3BDF