Limit to message rate handled by Pi3?

Is there a limit to the message rate that can be handled by a Pi3 running 3.5.0?

I’m seeing 1600+/sec but I expect more! Is there a way of telling if the Pi is overloaded?

This is a “top” dump …

top - 08:59:26 up 3 days, 18:01, 2 users, load average: 0.60, 0.51, 0.50
Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie
%Cpu(s): 9.6 us, 1.4 sy, 0.0 ni, 88.6 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st
KiB Mem: 947092 total, 305072 used, 642020 free, 38512 buffers
KiB Swap: 0 total, 0 used, 0 free. 168232 cached Mem

Any suggestions or observations (or explanations!) gratefully received!

Kind Regards

In the first line, the load average shows the system load time for the last 1, 5 and 15 minutes.

In the third line, the CPU usage:
CPU usage as a percentage by the user
CPU usage as a percentage by system
CPU usage as a percentage by low priority processes
CPU usage as a percentage by idle processes
CPU usage as a percentage by io wait
CPU usage as a percentage by hardware interrupts
CPU usage as a percentage by software interrupts
CPU usage as a percentage by steal time

Your CPU is idle 88% of the time, so it’s ready to process more.

Run: IP_address/dump1090-fa/data/stats.json

I am most grateful for your reply. I take it then that my Pi is coasting and hardly breaking out into a sweat!

That’s reassuring …

Kind Regards

1 Like

Run: IP_address/dump1090-fa/data/stats.json

“latest”:{“start”:1500630518.7,“end”:1500630518.7,“local”:{“samples_processed”:0,“samples_dropped”:0,“modeac”:0,“modes”:0,“bad”:0,“unknown_icao”:0,“accepted”:[0,0],“strong_signals”:0},“remote”:{“modeac”:0,“modes”:0,“bad”:0,“unknown_icao”:0,“accepted”:[0,0]},“cpr”:{“surface”:0,“airborne”:0,“global_ok”:0,“global_bad”:0,“global_range”:0,“global_speed”:0,“global_skipped”:0,“local_ok”:0,“local_aircraft_relative”:0,“local_receiver_relative”:0,“local_skipped”:0,“local_range”:0,“local_speed”:0,“filtered”:0},“altitude_suppressed”:0,“cpu”:{“demod”:0,“reader”:0,“background”:0},“tracks”:{“all”:0,“single_message”:0},“messages”:0},
“last1min”:{“start”:1500630458.7,“end”:1500630518.7,“local”:{“samples_processed”:143917056,“samples_dropped”:0,“modeac”:0,“modes”:942303,“bad”:539225,“unknown_icao”:309811,“accepted”:[87991,5276],“signal”:-7.5,“noise”:-16.1,“peak_signal”:-0.9,“strong_signals”:4885},“remote”:{“modeac”:0,“modes”:0,“bad”:0,“unknown_icao”:0,“accepted”:[0,0]},“cpr”:{“surface”:0,“airborne”:4418,“global_ok”:3955,“global_bad”:1,“global_range”:1,“global_speed”:0,“global_skipped”:10,“local_ok”:394,“local_aircraft_relative”:0,“local_receiver_relative”:0,“local_skipped”:68,“local_range”:0,“local_speed”:0,“filtered”:0},“altitude_suppressed”:0,“cpu”:{“demod”:11386,“reader”:4539,“background”:989},“tracks”:{“all”:12,“single_message”:0},“messages”:93267},
“last5min”:{“start”:1500630218.7,“end”:1500630518.7,“local”:{“samples_processed”:719978496,“samples_dropped”:0,“modeac”:0,“modes”:4704030,“bad”:2689937,“unknown_icao”:1542973,“accepted”:[444115,27005],“signal”:-7.3,“noise”:-16.0,“peak_signal”:-0.9,“strong_signals”:26993},“remote”:{“modeac”:0,“modes”:0,“bad”:0,“unknown_icao”:0,“accepted”:[0,0]},“cpr”:{“surface”:0,“airborne”:23116,“global_ok”:20883,“global_bad”:2,“global_range”:1,“global_speed”:1,“global_skipped”:48,“local_ok”:1952,“local_aircraft_relative”:0,“local_receiver_relative”:0,“local_skipped”:279,“local_range”:0,“local_speed”:0,“filtered”:0},“altitude_suppressed”:0,“cpu”:{“demod”:57132,“reader”:22831,“background”:4884},“tracks”:{“all”:61,“single_message”:12},“messages”:471120},
“last15min”:{“start”:1500629618.7,“end”:1500630518.7,“local”:{“samples_processed”:2159935488,“samples_dropped”:0,“modeac”:0,“modes”:13997189,“bad”:7986867,“unknown_icao”:4568387,“accepted”:[1360499,81436],“signal”:-7.0,“noise”:-15.6,“peak_signal”:-0.7,“strong_signals”:100065},“remote”:{“modeac”:0,“modes”:0,“bad”:0,“unknown_icao”:0,“accepted”:[0,0]},“cpr”:{“surface”:2,“airborne”:74773,“global_ok”:68698,“global_bad”:9,“global_range”:1,“global_speed”:8,“global_skipped”:145,“local_ok”:5333,“local_aircraft_relative”:0,“local_receiver_relative”:0,“local_skipped”:735,“local_range”:0,“local_speed”:3,“filtered”:0},“altitude_suppressed”:0,“cpu”:{“demod”:170697,“reader”:69154,“background”:14507},“tracks”:{“all”:163,“single_message”:29},“messages”:1441935},
“total”:{“start”:1500303458.6,“end”:1500630518.7,“local”:{“samples_processed”:784912351232,“samples_dropped”:0,“modeac”:0,“modes”:505462661,“bad”:2762259291,“unknown_icao”:1627194959,“accepted”:[390057044,20918663],“signal”:-7.5,“noise”:-17.6,“peak_signal”:-0.3,“strong_signals”:25497362},“remote”:{“modeac”:0,“modes”:2476902,“bad”:0,“unknown_icao”:0,“accepted”:[2476902,0]},“cpr”:{“surface”:5220,“airborne”:22906472,“global_ok”:21442594,“global_bad”:9212,“global_range”:6811,“global_speed”:336,“global_skipped”:42349,“local_ok”:1230825,“local_aircraft_relative”:0,“local_receiver_relative”:0,“local_skipped”:229061,“local_range”:77,“local_speed”:3636,“filtered”:41427},“altitude_suppressed”:0,“cpu”:{“demod”:56372567,“reader”:23346727,“background”:4450433},“tracks”:{“all”:43884,“single_message”:9449},“messages”:413452609}

This doesn’t mean a great deal to me I’m afraid :cry:

For one minute: “peak_signal”:-0.9,“strong_signals”:4885
That’s what I had too, stronger signals (close-up planes) get clipped and discarded. You can try to reduce the gain by 6…10dB for a day (week) and go from there.

There seems to be a natural limit somewhere around 1600-ish for an omni antenna; you’ll probably need to go to sectorized antennas if you want more than that.
I think it’s a combination of the message collision rate, and TCAS self-limiting in busy environments.

2 Likes

That’s it! Thank you.

Hugh

Interesting analysis:
grant-trebbin.com/2014/10/wh … ystem.html
Conclusion:

1533 is the number of frames per second supported in this instance, but it’s not the number of planes. Each plane is required to transmit location and velocity frames twice a second. They are also required to transmit a flight ID frame every 5 seconds. This means at a bare minimum the plane is transmitting 4.2 frames per second. I’m unsure if the plane is required to transmit it’s position twice a second or position frames twice a second (there is a difference). ADS-B uses a strange compression method called compact position reporting to transmit the latitude and longitude of a plane. Two frames are required for a full latitude and longitude position. I’m going to stick with 4.2 frames a second but it could be 6.2 frames per second.
Taking the number of 4.2 frames per second per plane as a minimum means that there can’t be more than 1533/4.2 = 365 planes visible to a receiver at any one time. Even that’s an unlikely scenario, because at that point there are quite a few frame collisions occurring. Having said that there will always be some collisions. It’s still around 10% which is not insignificant.

To avoid collisions, multiple sectors are needed and multiple RF receivers (one per sector, separate collision domains). One Pi3 can handle all of them IMO.

Hey, @obj, can the FilghtFeeder accommodate multiple receivers? I am tempted to experiment, even if max of what I see is only around 500 simultaneous, adding an extra USB RF receiver and two directional antennas.

Double click post, sorry.

No, it’s not set up for that.

I’m pleased to have initiated a good discussion and most grateful for the information.

Anyone have a Mode S Beast for sale?

Kind Regards

Hugh

2 Likes

There are a few holes in the analysis that make the numbers a bit different (but the basic concept is right).

ADS-B is not the only traffic on 1090MHz. There is also non-ADS-B Mode S traffic (DF11 acquisition squitters, responses to SSR interrogations, responses to TCAS); there are also mode A/C replies. Many of the Mode S replies are half the length of ADS-B messages so the probability of collisions is lower.

But somewhere around 1500-2000 is not an unreasonable guess.

3 Likes

Great discussion!

2 Likes

My RPi3 Piaware 3.1 runs 1800+ just, mainly in the 1700’s , fine tuning of the gain helped.
I’m in a busy area 10km to the side of Heathrow with reasonably clear horizon and think this is the natural limit for my location - local traffic clobbers the more distant stuff.
I have tried The Mode S Beast, Planefinder and AirSpy - RPi3/Piaware comes out the best but only just.

PS: Piaware is the only one of the above that you can tune the gain, which allows you to maximise planes or messages (in my location).

You can alsof tune the gain from the Airspy (0-21)

I’ve been trying to get my hands on a used one as well. Seems that those that have them are keeping hold of them! Should have done the same when I had one a few years back - alas I sold it when I thought I wasn’t going to be able to support this hobby any longer :unamused:

Heathrow is around 12 miles South West of me, If aircraft are landing towards West my simple setup sees the planes to around 1500 feet then they disappear. Indoor telescopic antenna and a Pi Zero in upstairs bedroom. Aircraft count usually around 1700-2000

Geoff

This was an 1 year old thread. Why dig it up?

The thread may be old but new users have similar problems and searches bring up older threads.

Wasn’t actually aware of age. Is there a message age limit?

Geffers

1 Like