I am mounting my filesystem using NFS.
When I try and write files into a FUSE share, I get multiple Opens and multiple threads of execution for the same file.
I believe that this is coming from NFS, not FUSE. Yes, FUSE is running multi-threaded, but I think this is a NFS type issue.
In my Write operations, I am seeing anywhere from 2 to 8 threads writing to the same file.
They start out fine and if the file is small, the offset in the Writes stay in order. However, as the size of the file grows, the number of threads increases and the threads appear to start working asynchronously.
This causes the actual I/O to become NON-SEQUENTIAL, which is bad for my filesystem, I am depending upon SEQUENTIAL I/O.
I have two ways to attack this problem.
1) In my filesystem (dtfs), which is a preferable solution.
2) On the client doing the nfs mount
On my test machine,
In the /etc/exports file, I have the following:
in the /etc/mtab file, I have the following that pertains to dtfs:
dtfs /opt/fuse fuse rw,nosuid,nodev,allow_other,user=dtfs 0 0
in the /etc/fstab file, I have nothing that pertains to dtfs:
I was trying to figure out what to put in fstab that might help with some of the mount options. I am still working on that.
When I use the following mount options, I get the NON-SEQUENTIAL error:
sudo mount -v -t nfs -o wsize=131072,proto=tcp,soft,intr ipaddr_of_my_test_box:/opt/fuse/shared/share2 dev3_share2
However, I do see I/O transfers at 128K.
I have added the "sync" option to prevent the NON-SEQUENTIAL write issue, However, Performance is really bad
I am using the following to create a nfs mount:
sudo mount -v -t nfs -o wsize=131072,proto=tcp,soft,intr,sync ipaddr_of_my_test_box:/opt/fuse/shared/share2 dev3_share2
This solves the ordering problem, but I noticed that the size is only 4k.
If I were able to get the size up to 128K or 1 Meg, this might be Ok, but at 4K or less, it does not do well.
dtfs.log size = 35672688 bytes
dd if=dtfs.log of=dev3_share2/dtfs09.log bs=128k
272+1 records in
272+1 records out
35672688 bytes (36 MB) copied, 79.1065 seconds, 451 kB/s <<<<<<<<<<<<<<<
The dd cmd is using 128K bytes, However, when I see the actual writes come across from FUSE, they are 4k.
Do any of you have any experience with NFS working with FUSE and trying to configure or tune it for this type of application?
From: Nikolaus Rath [mailto:Nikolaus@...]
Sent: Friday, May 27, 2011 3:54 PM
Subject: Re: [fuse-devel] multi-threaded Fuse and Writes
John Haechten <jhaechten-irkbWhyupXwoM3ANB2zruQ@...> writes:
> Is there an option for FUSE to enforce Sequential WRITE ?
If you mean per file: browse the ml archive, I think this was discussed
a few days/weeks ago.
>Time flies like an arrow, fruit flies like a Banana.<
PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
fuse-devel mailing list