With below two methods you can find if a process is continuously running on single core or if it is switching between all the available cores based on the availability.
Method 1
Below command can be used
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 8 00:00:01 fio
Here 'psr' column shows the last used core by the process. I have used pgrep to grep the pid of the process running by the name of 'fio'. Everytime I hit the same command I observe the processor to be changing
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 8 00:00:03 fio
PID PSR TIME COMMAND
8453 9 00:00:00 fio
8455 8 00:00:03 fio
So to monitor this for a while I can run it in a while loop, here I have used a sleep of 5 seconds which you can increase based on the requirement
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 9 00:00:07 fio Fri Jul 7 18:47:13 IST 2017
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 9 00:00:07 fio Fri Jul 7 18:47:18 IST 2017
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 9 00:00:07 fio Fri Jul 7 18:47:23 IST 2017
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 9 00:00:07 fio Fri Jul 7 18:47:28 IST 2017
PID PSR TIME COMMAND
8453 4 00:00:00 fio
8455 9 00:00:07 fio Fri Jul 7 18:47:33 IST 2017
PID PSR TIME COMMAND
8453 5 00:00:00 fio
8455 9 00:00:07 fio Fri Jul 7 18:47:38 IST 2017
Method 2
'top' is a nice tool which can also give you this information.
Execute 'top' from your terminal
Press "f" to enter the field menu as below
Press "J" as the menu shows which will display the last used CPU
Hit "Enter"
Now you should see a new column in your top command output
I hope the article was useful.
Related Articles:
Understanding Load Average in Linux and when to be worried about it?
How to run a process in background or bring to foreground in Linux
10 examples to help you understand top command usage in Unix/Linux