Re: Merging relayfs?

From: Tomasz Kłoczko
Date: Wed Jul 13 2005 - 11:57:07 EST


On Wed, 13 Jul 2005, Vara Prasad wrote:
[..]
Looks like you have not looked at systemtap project although Tom pointed about it to you in his previous postings. The URL for systemtap is http://sourceware.org/systemtap/, i strongly suggest you to look at that project.

I'm just fill this gap.
Sorry but I cant't find in this document even single word about assumption about agregatre data possibly in short range from probe. But point 6.1 this document says:

"Kernel-to-user transport Data collected from systemtap in the kernel must
^^^^^^^^^^^^^^ ^^^^
somehow be transmitted to userspace. This transport must
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
have high performance and minimal performance impact on the monitored system. One candidate is relayfs. Relayfs provides an efficient way to move large blocks of data from the kernel to userspace. The data is sent
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
in per-cpu beffers which a userspace program can save or display.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Drawbacks are that the data arrives in blocks and is separated into per-cpu blocks, possibly requiring a post-processing step that stitches the data into an integrated steam. Relayfs is included in some recent -mm kernels. It can be built as a loadable module and is currently checked into CVS under src/runtime/relayfs. The other candidate is netlink. Netlink is included in the kernel. It allows a simple stream of data to be sent using the familiar socket APIs. It is unlikely to be as fast as
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
relayfs. Relayfs typically makes use of netlink as a control channel. With ^^^^^^^
some simple extensions, the runtime can use netlink as the main transport too. So we can currently select in the runtime between relayfs and netlink, allowing us to support streams of data or blocks. And allowing us to perform direct comparisons of efficiency. [..]"

So .. using relayfs is neccessary because all collected data "must
somehow be transmitted to userspace" and this why must be transfered huge amout of data.

But if transering big amout of data will not be an issue seems netlink can be used for transfer data (generaly agregated) from kernel probes (?).
But also "with some simple extensions, the runtime can use netlink as the main transport too".
Even this document says "relayfs isn't neccessary fundament for systemtap". So .. why try to push for merge relayfs *NOW* ?
Because KProbes do not have expressions and some base agregators like couters isn't possibe to check NOW in real examples is realy realyfs is neccessary (?) :)

kloczek
--
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek@xxxxxxxxxxxxxxxxxx*