Technical Tip: FortiOS process to CPU association
| Description | This article describes how to identify which CPU is handling a process at a given time. |
| Scope | FortiGate v6.2, v6.4, v7.0, and v7.2 GA releases. |
| Solution | Let's assume a user wants to identify which is the physical CPU is handling the OSPF process.
diagnose sys process pidof ospfd 182
From the above result, the PID of ospfd is 182.
fnsysctl cat /proc/182/stat
182 (ospfd) S 178 178 178 0 -1 4202752 2204 0 0 0 3 0 0 0 5 -15 1 0 5928 213377024 1976 18446744073709551615 4194304 44303833 140736593983088 140736593982408 140663142887446 0 0 3676160 25216747 0 0 0 17 3 0 0 0 0 0
In the 'fnsysctl cat /proc/182/stat' output, each value separated by a space represents a field. The value at position 39th (Field 39 => Processor) indicates the CPU core on which the process last executed. The OSPFd is bound to the CPU core 3. Alternatively, the command 'diagnose sys top' can be used to check. Process ospfd below is running on CPU 5:
diagnose sys top 1 1000 1 | grep ospf
In case a user cannot remember the name of the process by heart, use this alternative global command:
fnsysctl ps PID UID GID STATE CMD 228 0 0 S /bin/acd 182 0 0 S /bin/ospfd
The particular command generates a matrix of the running processes and the PIDs associated with them.
Note: Super Admin privilege is required to run the 'fnsysctl' command. Otherwise, FortiGate will return an error as mentioned in this article: Technical Tip: fnsysctl command returns Unknown action 0.
Related article: Troubleshooting Tip: How to check which CPU core is used by each daemon |