Syslog flushes all logs to disk as they happen (synchronous writes).
So it is very slow.
I believe tcpborphserver (ROACH's KATCP server) should not be logging
anything anymore.
The logs you're seeing are likely from the kernel itself, as BORPH
logs every bus transaction. A kernel recompile is required to remove
this entirely. But you can configure what is logged to disk by syslog
in /etc/syslog.conf. Perhaps try to disable the logging of these
messages.
You should be getting around 7MegaBytes/s across that bus. Even over a
network. This is just dumping data, and does not count bus overhead
incurred by reading small quantities of data from different BRAMs etc.
If you try to dump the whole DRAM using tcpborphserver's "bulkread"
command, you should achieve something close to 3.5MB/s across the
network using the Python KATCP and the wrapper in corr.
Jason
On 28 Apr 2010, at 08:11, Aaron Parsons wrote:
I'm currently only able to read ~100kB/s from shared BRAMs on the
ROACH. I assume the ROACH can do better than this.
I've profiled my code and am certain that the bottleneck is in reading
BRAM files. When I looked closer, I found a bunch of logging showing
up in /proc/kmsg for every file transaction. Acting on the theory
that this logging was slowing everything down, I killed syslogd and
klogd (/etc/init.d/klogd stop, etc). Yet I still get lines in
/proc/kmsg from "proc_borph". I can't find any processes that I
recognize as potentiall logging daemons, and I haven't found anything
with lsof that indicates what may be writing to /proc/kmsg. I'm left
thinking that maybe this logging is compiled into the kernel.
Does anyone know what is cause such lousy file I/O performance on the
ROACH? If it is indeed a problem with excessive logging, how do I
stop it?
--
Aaron Parsons
510-406-4322 (cell)
Campbell Hall 523, UCB