Floyd
displays system load with
p*u*l*s*e
of keyboard LED
currently runs only on linux
Secret Gig Page
http://www.asahi-net.or.jp/~pi9s-nnb/floyd/
Last modified: Thu Dec 1 19:17:05 2005
(
Stable 2.0.1 finally
released)
NEWS
- After all we've got
2.0.1.
- Changes in old snapshots (up to 2.0pre01 Edition 15).
- Edition 14 -> 15:
- New hidden option -M/+M to enable/disable `Morse'
(or `Professor Dog') mode.
If -M is specified,
the `Morse' mode is turned on
when the load average exceeds the bigload switch
(default 8.5: may be too big ? See option
-b in the manual).
In the `Morse' mode, current load average
is displayed with the number of short blinks of LED between
which long turn-off period is inserted.
Of course -M/+M is just gracefully ignored by floyd in
packet load mode.
The `Morse' mode is conceived to reduce the %CPU of floyd in
load average mode. I still don't know if it is really
effective
for that purpose (not well tested in the field), but
you may read current (heavy)load directly from the blinking
LED at least, and it may make point.
- patches directory added in the source. It
includes just one patch 00bonzo.diff.gz
(the Bonzo patch), to blink LED in response to the
chages in the text lines fed from its standard
input. I don't know if this patch still applies
allright (maybe Edition 13 or 14 should be used), and
forgot how to use it (Maybe the patch includes
some documents...).
With this version, I tried to display SCSI HDD traffic
read from
/proc/scsi/BusLogic/0, and make the keyboard
LED act like HDD LED, but it didn't work well. Maybe I
should have written /proc/scsi/BusLogic/0
reading part in C, or kernel just sabotage to update
the proc file when the HDD is busily accessed.
- Edition 13 -> 14:
- The `job' related options are relocated for the
integrity of the versions:
versions
| Edition 13
| Edition 14
|
with PTHREAD
| -V/-- -D
| -D/-- -F
|
without PTHREAD
| -D -F(alias of -D)
| -D -F not supported
|
- The Changes are:
- The voodoo option -V to define a
`thread job' in
PTHREAD version is renamed to -D,
since I gave up to implement the same -D
behavior as in version 1.3.x or non-PTHREAD
version of 2.0pre.
- Now option -D `D'efines a floyd `job' in
both of
floyd 1.3 and 2.0pre0
(with or without PTHREAD support).
The job is run
as a child process
in floyd 1.3 and 2.0pre0 without
PTHREAD support,
or as a thread
in 2.0pre0 with PTHREAD support.
- The facility of the old -D in Edition 13
or older
is relocated to -F.
To fork one child in PTHREAD version, use option
-F (now supported officially, but only for
PTHREAD version).
- With the integration on `job' related options above, now
floyd.1 (TEXT) is
shared by 1.3.x and 2.0.x.
- The option -V
is still supported awkwardly
as an alias of -D (or --)
in the current edition, but may be dropped
in future.
- Edition 12 -> 13:
- non-PTHREAD version in Edition 12 didn't work. Fixed.
- rc.floyd.pthread added.
- Renamed VOODOO.README to README.PTHREAD.
- More minor fixes. Refer to ChangeLog.
- Edition 11 -> 12: Fixes and cleanups. floyd.1 is updated,
but it is still the same as that of 1.3.x.
- Edition 10 -> 11:
- Edition 9 -> 10
- Cleaned up ugly codes in main().
- More robust control on pload_getproc_loop
(/proc/net/dev reading thread), LED init, and
exiting on signal/errors, etc.
- Perhaps "-p +p" (enabled, but changed your
mind, and disabled) sort of command line
can be handled correctly (it did not work in Edition 9).
- Option -v reports some extra info to identify which
process is which, and which minite's load average is
displayed.
- -- is alias for -V (better than
-V ?), and - stands for explicit
stdin expression.
- Shredding /proc/loadavg access to a thread is not yet.
- Edition 8 -> 9
- Edition 7 -> 8: floyd -E worked but floyd -CV -SE
won't work in Edition 7. Fixed.
- Edition 6 -> 7
- Now make pthread makes pthread version, and
the binary name is also floyd.
- /proc/net/dev reading job runs as a thread,
and its output is shared by all the packetload mode threads.
This feature corresponds to a cpp conditional
PROCTHREAD,
which is enabled by default in make pthread.
- /proc/loadavg accessing does not runs
as a thread yet.
I think that users don't want two or more
load average mode LEDs at the same time, since current edition
displays only load average of 1min.
- Edition 5 -> 6: Edition5 can't make non-PTHREAD version. Fixed.
- Edition 4 -> 5: Cleanup. No change in feature.
- Exits normally on LED ioctl() error.
The IGNOREERROR feature is enabled with undocumented
option -f.
- Now floyd can be compiled/installed without PTHREAD
support by make all ; make install. The non-PTHREAD
version is exactly the same as 1.3.x in performance and
in user interface, but it requires a little bit more memory.
- The non-PTHREAD version: -D option works as
`fork-right-now' command, as in 1.3.x. In the PTHREAD
version, the option -D is still just a
`fork-child-then-exit' flag.
- The keyboard BLACKLIST added.
Send your BLACKLIST if you have any.
- MICROSOFT `Natural' Elite ® found to be
floyd-incompatible in
combination with a certain motherboard or Chipset.
Spurious characters are input while floyd is working,
and the %CPU of floyd process goes up high. Kernel 2.2.10
generates warning
"keyboard: Too many NACKs -- noisy kbd cable?"
(/usr/src/linux-2.2.10/drivers/char/pc_keyb.c).
- The BLACKLIST mentions this program
howmanymoretimes.c,
and I found that it is not included anywhere. Sorry.
Try
cc howmanymoretimes.c;./a.out
to test your keyboard. It loops 4 seconds,
and dumps some debugging messages. If it does not raise any
^G nor warning message, probably your keyboard is
floyd-compatible. The a.out may take one arg
[N|C|S], to specify an LED to use in the test.
The howmanymoretimes.c is conceived to
provide a is-keyboard-connected-error check in floyd,
but not yet implanted in it. The source is not well cleaned up.
STABLE VERSION
floyd-2.0.1.tar.gz
2.0.1 release version.
Now PTHREAD support is default, and "make all" makes
PTHREAD version.
In the PTHREAD version,
you can define a floyd jobs with -D:
floyd -v -C -D -ES -D -pi ppp0 -N
On parsing each -D,
all the current option/parameter status at that point are copied
to a struct floyd_param, whose pointer is then registered in
a struct floyd_job.
The floyd_job is all launched
after whole command line arguments are parsed.
In the PTHREAD version, option -F just
determines whether a child process should be forked or not,
and can be put anywhere in the command line.
One still-undocumented option -o is present
(I don't remember if I really didn't
write about it in ChangeLog, nor when I implemented it, though),
with which you can specify
the `o'perating mode: -op: `p'acket load mode,
or -ol: `l'oad average mode. I think I should implement some option
-L<n|c|s> (a generic expression of the LEDs) too...