linux_proc: Linux process utilities
A Dart package to read Linux system statistics, process status and DBus services.
DBus is still very much a work in progress.
Note this library only supports Linux
Features
- Parses the procfs(5) /proc filesystem for Linux system and process information
- Parses the output of systemd DBus queries for Systemd service status (WIP)
Using the API
// create a stats manager
final statsManager = StatsManager(refreshTimeSeconds: 2, queueSize: 100);
// get the stream of statistics.
await for (final stat in statsManager.stream) {
// stat ref contains cpus stats, process info, etc.
}
// To pause stats collection
statsManager.setRefreshTime(0);
// to start it again
statsManager.setRefreshSeconds(4);
// get the queue of the last N results
var q = statsManager.statsQueue;
Dart Top
See dtop for an example of how to use this package to implement a Dart version of the Linux top(1) command.
cd dtop
dart pub get
dart run bin/dtop.dart
Performance
This library uses the synchronous versions of most dart:io
file system calls to parse the procfs filesystem.
The overhead is much lower using synchronous calls. For example, using async i/o, the dtop
command consumes approx. 8% of a virtual CPU when the statistics are refreshed every 2 seconds. Using Synchronous i/o brings this down to approx. 3%.
If you are going to use this library in a Flutter application, you may need to run the statistics gathering in an isolate to avoid blocking the UI thread.
Libraries
- linux_proc
- linux process utilities