Winse Blog

走走停停, 熙熙攘攘, 忙忙碌碌, 不知何畏.

使用Flamegraph查看磁盘使用情况

以前有使用FlameGraph做Java程序的堆栈(热点代码)的显示。其实磁盘也可以使用类似的方式来显示查看占用情况,找出没用的数据。

1
2
3
4
5
$ git clone https://github.com/brendangregg/FlameGraph.git

#使用管理员权限运行
winse@Lenovo-PC /cygdrive/e/git/FlameGraph
$ ./files.pl /cygdrive/c/ | ./flamegraph.pl --hash --countname=bytes > /cygdrive/r/c.svg

然后浏览器查看即可,主要还是查看占用比。(但是不一定所有文件都包括在SVG里面)。

当然,默认官网提供的 files.pl 是获取所有的目录。我们可以做下层级控制,代码修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ git diff
diff --git a/files.pl b/files.pl
index 27654be..5d1012e 100755
--- a/files.pl
+++ b/files.pl
@@ -29,7 +29,16 @@ sub usage {
 usage() if @ARGV == 0 or $ARGV[0] eq "--help" or $ARGV[0] eq "-h";

 foreach my $dir (@ARGV) {
-    find(\&wanted, $dir);
+    find({
+       preprocess => \&preprocess,
+       wanted => \&wanted,
+    }, $dir);
+}
+
+sub preprocess {
+       my $depth = $File::Find::dir =~ tr[/][];
+       return @_ if $depth < 8;
+       return ;
 }

 sub wanted {

下列的文件夹可以排查下进行处理:

  • C:\pagefile.sys C:\swapfile.sys : 系统属性-高级-性能选项-虚拟内存
  • C:\hiberfil.sys : powercfg -h -zie 60% ; powercfg.exe /hibernate off
  • C:\ProgramData\Package Cache

参考

–END

Comments