From 53e7986bc00d0223b4c240db5f876fa81ff3f050 Mon Sep 17 00:00:00 2001 From: Vishnu kannan Date: Wed, 7 Oct 2015 17:36:19 -0700 Subject: [PATCH] Reduce cpu priority for `du`. --- fs/fs.go | 2 +- fs/fs_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/fs/fs.go b/fs/fs.go index 00c06456..ebf8273b 100644 --- a/fs/fs.go +++ b/fs/fs.go @@ -282,7 +282,7 @@ func (self *RealFsInfo) GetDirFsDevice(dir string) (*DeviceInfo, error) { } func (self *RealFsInfo) GetDirUsage(dir string) (uint64, error) { - out, err := exec.Command("du", "-s", dir).CombinedOutput() + out, err := exec.Command("nice", "-n", "19", "du", "-s", dir).CombinedOutput() if err != nil { return 0, fmt.Errorf("du command failed on %s with output %s - %s", dir, out, err) } diff --git a/fs/fs_test.go b/fs/fs_test.go index 2071f02d..80b39787 100644 --- a/fs/fs_test.go +++ b/fs/fs_test.go @@ -15,7 +15,11 @@ package fs import ( + "io/ioutil" + "os" "testing" + + "github.com/stretchr/testify/assert" ) func TestGetDiskStatsMap(t *testing.T) { @@ -76,3 +80,23 @@ func TestFileNotExist(t *testing.T) { t.Fatalf("getDiskStatsMap must not error for absent file: %s", err) } } + +func TestDirUsage(t *testing.T) { + as := assert.New(t) + fsInfo, err := NewFsInfo(Context{}) + as.NoError(err) + dir, err := ioutil.TempDir(os.TempDir(), "") + as.NoError(err) + defer os.RemoveAll(dir) + dataSize := 1024 * 100 //100 KB + b := make([]byte, dataSize) + f, err := ioutil.TempFile(dir, "") + as.NoError(err) + as.NoError(ioutil.WriteFile(f.Name(), b, 0700)) + fi, err := f.Stat() + as.NoError(err) + expectedSize := uint64(fi.Size()) + size, err := fsInfo.GetDirUsage(dir) + as.NoError(err) + as.True(expectedSize <= size, "expected dir size to be at-least %d; got size: %d", expectedSize, size) +}