[fpc-pascal] My Linux service application consumes 10% CPU when idling - why?
bo.berglund at gmail.com
Thu Oct 7 19:41:54 CEST 2021
On Tue, 5 Oct 2021 10:22:44 +0200 (CEST), Michael Van Canneyt via fpc-pascal
<fpc-pascal at lists.freepascal.org> wrote:
>> My program in Lazarus *is* a "simple program" and it has no GUI components.
>> I never even looked at the implementation of CheckSynchronize()...
>> It was just given in another thread when I was working on the port from Delphi
>> to Linux and thus from the Windows GUI environment to the non-GUI command line
>> program environment.
>The name 'Gui thread' is misleading. It's simply the main program thread.
>If you want to use TThread.Synchronize then the call to CheckSynchronize is
>needed. The LCL for GUI application simply calls it automatically for you.
>In a non-GUI command-line program, you're responsible for calling it from
>time to time.
That is what I had learned back in beginning of this year when I was starting
testing on actual hardware. Checksynchronize is needed in the main program loop
in order for threads to fire off events etc. I use threads to handle serial port
communications, and the threads should be disposed of after use...
Now I have done some more investigations and I am more confused by it...
My service program runs at about 4% CPU usage as shown by top. This holds true
for a long time after starting it (several idle days).
But when a client connects to inspect data on the system the usage spikes when
he commands some data display etc. But then goes back to the 4% or so.
If the client enables a task to be executed then nothing really happens until
that task starts on its set time.
At that time the CPU usage raises from 4% to 11% and goes up/down a few % for
the minutes it runs and then returns to an idle value of about 8%, which it
never gets below after that.
No matter how long I wait it is now stuck at that double value.
So clearly something must be left behind after the task has finished...
The question is: how to find what is still using CPU?
Developer in Sweden
More information about the fpc-pascal