From 0da2dfd640a3d915cbfbd9ecf10ebaee895855a3 Mon Sep 17 00:00:00 2001 From: chrislu Date: Tue, 28 Dec 2021 12:22:56 -0800 Subject: [PATCH] fuse: change to direct io mode before and after: chrislu$ time dd if=/dev/random of=/Users/chrislu/tmp/mm/testfile bs=131072 count=8192 8192+0 records in 8192+0 records out 1073741824 bytes transferred in 4.534068 secs (236816430 bytes/sec) dd if=/dev/random of=/Users/chrislu/tmp/mm/testfile bs=131072 count=8192 0.01s user 3.86s system 84% cpu 4.561 total chrislu$ time dd if=/dev/random of=/Users/chrislu/tmp/mm/testfile bs=131072 count=8192 8192+0 records in 8192+0 records out 1073741824 bytes transferred in 3.824072 secs (280784948 bytes/sec) dd if=/dev/random of=/Users/chrislu/tmp/mm/testfile bs=131072 count=8192 0.01s user 3.22s system 83% cpu 3.857 total --- weed/command/mount_std.go | 2 +- weed/filesys/file.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/weed/command/mount_std.go b/weed/command/mount_std.go index ce9a998f6..8514f18af 100644 --- a/weed/command/mount_std.go +++ b/weed/command/mount_std.go @@ -175,7 +175,7 @@ func RunMount(option *MountOptions, umask os.FileMode) bool { fuse.DefaultPermissions(), fuse.MaxReadahead(1024 * 128), fuse.AsyncRead(), - fuse.WritebackCache(), + // fuse.WritebackCache(), fuse.MaxBackground(128), fuse.CongestionThreshold(128), } diff --git a/weed/filesys/file.go b/weed/filesys/file.go index bbc5c8e21..6cf52ba60 100644 --- a/weed/filesys/file.go +++ b/weed/filesys/file.go @@ -96,6 +96,7 @@ func (file *File) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp func (file *File) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error) { glog.V(4).Infof("file %v open %+v", file.fullpath(), req) + resp.Flags |= fuse.OpenDirectIO handle := file.wfs.AcquireHandle(file, req.Uid, req.Gid)