|
|
About
TODO
Blog
RSS
Old blog
Projects
Gallery
Notes
Sun, 29 Jul 2007
Distributed storage beta is ready.
One can translate 'beta' as supporint fully working local
and local exporting nodes, system passed quite heavy tests on both
x86 and x86_64 with local exporting and remote userspace nodes.
The last tricky bit I tried to fix for the last couple of days was in the
way polling and TCP work - it was observed only on small systems with 100 mbit NIC connected to
gigabit lan. TCP can merge several susequent segments into one chunk (less or equal to MSS,
which is usually 1448 bytes iirc), but ->poll() can only say that there is data
or not, tcpdumps showed that data from previous write request and current read request
(1024 and 24 bytes) were combined into one chunk, local exporting state machine detected
new data via polling callbacks, but after data from write request, it did not check if there
is new one. Since polling state machine will not be invoked again until there is new packet,
read request sat in the reading queue forever blocking all operations on the main node (mount
is synchronous).
Right now distributed storage formed on top of three remote nodes (one in-kernel local exporting
node and two userspace targets) tries to survive read/write/mout/umount/sync/mkfs test,
which is organized to fill filesystem on all three nodes. I will leave this test for this night,
so far about 200 iterations passed, let's see how it will feel itself tomorrow.
/devel/dst :: Link / Comments (0)
Please solve this captcha to be allowed to post (need to reload in a minute): 54 + 31
|