Gilboa Davara wrote:
Umm...
As far as I can see, realyfs uses memory buffer for storage, which is
major no-no in my case:
At 50-200MB/sec I'll deplete the system RAM within minutes (even on
AMD64) and as far as I can see, there's no obvious way to commit the
buffers into static storage.
Current me if I'm wrong, but relayfs was designed for fast Kernel/User
transactions and not Kernel/Kernel transactions, right?
I'm looking for 50% match open solution that can be bent to suite my
rather weird requirements.
As the saying goes: Writing you own FS really cuts down on your Doom3
time! :-)
Gilboa,
I'm sorry if I seound harsh, but I don't think you udnerstand your own
needs.
Let's try to analyze them together - you need to store large amount of
data from the network for proccessing by a further entity. What that
data is exactly doesn't matter, but we will note that you might need to
do non trivial handling of the data (encryption).
There obviously is no question of delay involved - you're talking about
writing to disk, using a FIFO to buffer information etc so obviously
there is no serious real time contraints on the data.
What you really care about therefore is - *througput*, NOT delay. For
this, crossing the kernel/userspace and related context switch is NOT a
problem!
The solution boils down to this:
1. You need some way to store information temporary in the kernel
(because it's getting first to the kernel).
2. You then need to handle it (assembly/encryption) and write it to disk.
3. After the data is on disk, you have a different proccess that sends
it to some thrid party, but we really don't care about that.
So long as you didn't perform 2, you want the information to wait in a
temporary buffer (I first wrote "bugger" here, which is rather funny ;-)
until you're done with it so store the data in a temporary in kernel
buffer (or bugger, if you prefer ;-), have a user space proccess read it
from there, proccess it, encrypt it, write it to file.
Have yet another proccess send it to the thrid party (possibly using
the Linux sendfile syscall for efficincy).
Now you can write that "Temporary buffer layer in kernel that can easily
be read by user space: your self but you'll be just wasting DOOM3
cyclesw. This is exactly RelayFS. The rest are simple user space
programs (and if you want to see an example on how to use it see Karim's
most excellent LTT tool that can use RelayFS: http://www.opersys.com/LTT).
Hope this helps,
Gilad
--
Gilad Ben-Yossef <[EMAIL PROTECTED]>
Codefidence. A name you can trust(tm)
Web: http://codefidence.com | SIP: [EMAIL PROTECTED]
IL: +972.9.8650475 ext. 201 | Fax: +972.9.8850643
US: +1.360.2275194 ext. 201 | Cel: +972.52.8260388
"I am Jack's Overwritten Stack Pointer"
-- Hackers Club, the movie
=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]