[Gambas-user] High CPU usage when using serialport component

Christer Johansson lists at ...2828...
Sat Aug 11 15:12:05 CEST 2012



> From: Benoît Minisini [mailto:gambas at ...1...]
>
> As the SerialPort example asks for DTR, RNG, ... Change events, the
> gb.net component watches if serial port file device is ready for writing
> and uses that to watch the serial port signals.
>
> So I guess the watch callback is called again and again (i.e. the serial
> port device is always ready for writing). There is a one millisecond
> sleep inside the callback so that not to much CPU is consumed, but RPi
> is a slow machine.

Thanks for the input Benoît, however what I find strange is that when I test
the same code (a simple CLI only opening /dev/ttyUSB0) on my other ARM
SBC running Debian Lenny it consumes close to nothing (i.e htop shows CPU%
as 0.0% all the time) using the serialport, below is stat from my NSA-220
and
the listed "gateway" process have been running for several weeks...

   PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
  30456 root      15   0 13336  2072   724 R  0.0  1.6  0:12.48 gbr3
./gateway.gambas

And the ARM CPU in NSA-220 is quite a bit weaker than the one in RasPi,
just for reference something like 330 vs 790 BogoMIPS so something strange
is going on, maybe it's something with the RasPi HW??

> To confirm that, can you use gdb to run the exemple, hit
> CTRL+C during the high CPU usage, and show me what the backtrace is then?

Hope I did things correctly and it helps you to get some clues?

christer at ...2912...:~/Gambas 3/Projekt/SerialPort$ gdb gbx3
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabi".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/gbx3...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/gbx3
[Thread debugging using libthread_db enabled]
^C
Program received signal SIGINT, Interrupt.
0x400efcfc in nanosleep () from /lib/libpthread.so.0
(gdb) bt
#0  0x400efcfc in nanosleep () from /lib/libpthread.so.0
#1  0x41aa1534 in ?? () from /usr/lib/gambas3/gb.net.so
#2  0x41aa1534 in ?? () from /usr/lib/gambas3/gb.net.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

Also attaches a screenshot...

/CJ

-------------- next part --------------
A non-text attachment was scrubbed...
Name: screenshotwin_15-09-41.png
Type: image/png
Size: 103450 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20120811/9fe2e257/attachment.png>


More information about the User mailing list