FortiGate
FortiGate Next Generation Firewall utilizes purpose-built security processors and threat intelligence security services from FortiGuard labs to deliver top-rated protection and high performance, including encrypted traffic.
aishaqui
Contributor
Article Id 230947
Description

This article describes that during troubleshooting CPU-related issues, it would be beneficial to know that each daemon is running on which CPU core.

Scope

FortiOS 7.0, 7.2.

Solution

Use the below command to check which CPU core is used by each daemon.

The last column shows the CPU core index

 

di sys top

 

 Run Time:  31 days, 18 hours and 12 minutes

0U, 0N, 0S, 100I, 0WA, 0HI, 0SI, 0ST; 2007T, 663F

         cmdbsvr      145      S       4.0     2.7    0

            node    28235      S       3.3     2.5    1

         updated      194      R       2.1     1.7    4

         reportd      190      S       6.0     1.5    3

          cw_acd      211      S       6.3     1.4    2

       forticron      180      S       2.7     1.3    3

         miglogd      189      R       1.1     1.3    1

           autod      215      S       5.8     1.2    4

 

From the above output, it is possible to conclude that the daemon updated process ID is 194 and it is running on CPU core 4.


If one core is observed (can be multiple) being used significantly more for a longer time, then, it can be helpful to run the CPU profiler.

 

get system performance status
CPU states: 1% user 0% system 0% nice 99% idle 0% iowait 0% irq 35% softirq
CPU0 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU1 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU2 states: 0% user 0% system 0% nice 100% idle 0% iowait 0% irq 0% softirq
CPU3 states: 5% user 0% system 0% nice 95% idle 0% iowait 0% irq 40% softirq

 

For example: CPU core 3 has the highest load in the system, softirq.

Now, proceed with CPU core profiling, which will give insight into what may be the problem (e.g. offloading).

 

diag sys profile cpumask <cpu core number>

diag sys profile start <- Run the command and leave it for 10-15 seconds.

diag sys profile stop  <- After 10-15 seconds run it to stop the profiler.

diag sys profile show  <- Will print the result on the console.

diag sys profile show order <- Shows in order.

 

Note:

If the process is in the S state (sleeping state), '# di sys top' will display the last used CPU because the process is sleeping.