Thread: Linux Mint 19.1
View Single Post
  #13  
Old 07-11-2019, 08:55 AM
Benanov Benanov is offline
Sarnak


Join Date: Jun 2019
Posts: 352
Default

Quote:
Originally Posted by Martos777 [You must be logged in to view images. Log in or Register.]
I followed the thread
https://www.project1999.com/forums/s...ad.php?t=14125
So I started the program with:
taskset -c 0 padsp wine eqgame.exe patchme 2>/dev/null

The right thing would have been:
taskset -c 1-3 padsp wine eqgame.exe patchme 2>/dev/null
1-3 would get you CPU 1, CPU 2, and CPU 3. A small amount of overkill, but that will work.

My system has CPUs 0 - 7. Each 'pair' (0,1), (2,3), (4,5), (6,7) is a physical core, because Intel's Hyperthreading is basically using one CPU and 'splitting' it when it can. This is not perfect, and there are times where one CPU will stall the other out because they both want to do the same operation.

HT came out long after EQ did. So my taskset arguments are to assign EQ to one physical core (the 2,3 pair) instead of one virtual core (where 2 can be 'interrupted' by the OS putting a task on 3).

From Wikipedia:

Quote:
In addition to requiring simultaneous multithreading (SMT) support in the operating system, hyper-threading can be properly utilized only with an operating system specifically optimized for it.[5] Furthermore, Intel recommends HTT to be disabled when using operating systems unaware of this hardware feature.
While EQ isn't an 'operating system' it was written before HT was a thing. HT came out with P4's and I was running EQ on a P2. That's why I tell taskset to give it the pair - and since EQ is a CPU hog, the OS doesn't try to schedule anything else on that one.
Reply With Quote