From: Nikolaus R. <Nik...@ra...> - 2018-04-24 10:55:51
|
On Apr 24 2018, 徐天棋 <xu.t.aa@m.titech.ac.jp> wrote: > I knew that, FUSE basically splits I/O requests that are bigger than 128KiB > into multiple 128KiB chunks. But around 128KiB things change. > > I found that > 1. When 128672 Byte <= I/O size <= 132744 Byte, FUSE would split the I/O > into two operations, one at 128672 Byte the other one handles the > remainder. > 2. When 132745 < I/O size, FUSE would first split I/O into 131056 Byte, > then split the remainders into multiple 128KiB chunks. > > For example, a 128KiB request may be split into 128672 + 2400 two > operations, and a 256KiB request may be split into 131056 + 131072 > (128KiB) + 16 three operations. > In addition, such behavior might be non-deterministic. Sometimes I find a > perfect 128KiB chunk for 128KiB request. > I checked the FUSE from default 2.9.3 to the latest 3.2.2, and tried the > "null.c" from the example folder. I found the same behaviors. > > I want to know that, where these "magic" numbers come from, and if I can > fix the chunk to 128KiB. You need to look into the fuse kernel module for this, not the libfuse user space library. libfuse works with whatever it gets from the kernel. Best, -Nikolaus -- GPG Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F »Time flies like an arrow, fruit flies like a Banana.« |