Recently I decided to switch to Linux and started testing various use-cases. One of them turns to be very interesting.
My laptop is Asus FX753. It has GTX 1050 GPU and 7700HQ. The tests below are made using Ubuntu 21.04 and Windows 10 (20H2).
I tested how does CPU/GPU behave during load on Linux/Windows. I would like to skip all of the findings and focus on only one thing that connects them all - Idle package power consumption (IPPC for short) of the CPU and how it is connected to the dGPU.
1. Using "Power Saver" mode in PRIME SELECT results in using only iGPU and completely turns nVidia off. In this case the IPPC is <2.5W.
2. Using "nVidia on demand" mode in Prime results in using iGPU unless explicitly selected nVidia. In this case both GPUs are always active. No matter how many processes are actually using the nVidia - it is always active! In this case IPPC is ~5-12W.
3. Using "performance" mode in Prime results in using ONLY nVidia gpu. It is always active. In this case IPPC is ~5-12W.
So far turning the dGPU on causes high power consumption on the CPU side which were supposed to be relaxed because its iGPU is not working.
Later on I tried to find why the IPPC is in so broad range - from 5 to 12W and how it is connected to the GPU. Luckily I found it. The answer was in power states of the GPU (P-states). When the GPU is using P0 (max performance) then the IPPC is 5W. In any other case the IPPC is more (up to 12W). It sounds quite counterintuitive but.. it turns out to be true. The faster the GPU runs the less affect it has on the CPU thus the CPU package power consumption is reduced and vise-versa - the slower the GPU runs, the more power CPU drains.
Now let's go to Windows. It has only one GPU mode - "on demand". The difference with Linux is that on Windows when no app is using the nVidia GPU then it is turned off thus resulting in IPPC <2.5W. If any app starts using the nVidia GPU then the IPPC go up to 12W. So on Windows the logic is the same as Linux - the faster the GPU runs, the lower CPU's package power is.
Note: I checked power consumption on Windows on idle. Power of the Core/IA/GX were almost 0, while package is 5-12W when nVidia enabled.
According to all findings the issue is not related to the OS/GPU. Somehow turning dGPU on (no matter of the usage) causes high CPU package power consumption (thus leaving to lower frequencies when CPU is loaded). What could be the reason? Is there something wrong with nVidia drivers for both Windows/Linux? Is there some specific CPU component that is activated when dGPU is running?
My laptop is Asus FX753. It has GTX 1050 GPU and 7700HQ. The tests below are made using Ubuntu 21.04 and Windows 10 (20H2).
I tested how does CPU/GPU behave during load on Linux/Windows. I would like to skip all of the findings and focus on only one thing that connects them all - Idle package power consumption (IPPC for short) of the CPU and how it is connected to the dGPU.
1. Using "Power Saver" mode in PRIME SELECT results in using only iGPU and completely turns nVidia off. In this case the IPPC is <2.5W.
2. Using "nVidia on demand" mode in Prime results in using iGPU unless explicitly selected nVidia. In this case both GPUs are always active. No matter how many processes are actually using the nVidia - it is always active! In this case IPPC is ~5-12W.
3. Using "performance" mode in Prime results in using ONLY nVidia gpu. It is always active. In this case IPPC is ~5-12W.
So far turning the dGPU on causes high power consumption on the CPU side which were supposed to be relaxed because its iGPU is not working.
Later on I tried to find why the IPPC is in so broad range - from 5 to 12W and how it is connected to the GPU. Luckily I found it. The answer was in power states of the GPU (P-states). When the GPU is using P0 (max performance) then the IPPC is 5W. In any other case the IPPC is more (up to 12W). It sounds quite counterintuitive but.. it turns out to be true. The faster the GPU runs the less affect it has on the CPU thus the CPU package power consumption is reduced and vise-versa - the slower the GPU runs, the more power CPU drains.
Now let's go to Windows. It has only one GPU mode - "on demand". The difference with Linux is that on Windows when no app is using the nVidia GPU then it is turned off thus resulting in IPPC <2.5W. If any app starts using the nVidia GPU then the IPPC go up to 12W. So on Windows the logic is the same as Linux - the faster the GPU runs, the lower CPU's package power is.
Note: I checked power consumption on Windows on idle. Power of the Core/IA/GX were almost 0, while package is 5-12W when nVidia enabled.
According to all findings the issue is not related to the OS/GPU. Somehow turning dGPU on (no matter of the usage) causes high CPU package power consumption (thus leaving to lower frequencies when CPU is loaded). What could be the reason? Is there something wrong with nVidia drivers for both Windows/Linux? Is there some specific CPU component that is activated when dGPU is running?