解决数据集导致的大内存占用和磁盘IO问题

看到Ubuntu上的磁盘IO和内存占用出奇的高,忍无可忍,决定必须解决一下了。

内存占用最高的是chrome和gvfsd-metadata,前者1.6G没办法,后者竟然有1.8G。查了一下维基百科

gvfsd-metadata is a daemon acting as a write serialiser to the internal gvfs metadata storage. It is autostarted by GIO clients when they make metadata changes. Read operations are done by client-side GIO code directly, and don’t require the daemon to be running. The gvfs metadata capabilities are used by the GNOME Files file manager, for example.

虽然仍然没搞懂它是个什么东西,但是罪魁祸首就是它没跑了,形成的原因大概是我打开过很多大的数据集的文件夹,比如pascal voc、shapenet、pascal3d,要是还有imagenet就更恐怖了。从这个帖子来看,它还导致了100%的CPU占用。后面给出了临时的解决办法:

rm -rf ~/.local/share/gvfs-metadata
pkill gvfsd-metadata

如果这种情况继续出现,那么直接按照这里所说取消gvfsd-metadata的执行权限即可:sudo chmod -x /usr/lib/gvfs/gvfsd-metadata

另外,iowait也达到了27%左右,我只不过开了个sublime-text而已。原因仍然是数据集,有好几个sublime_text --crawl的进程在不停地读磁盘,给文件做索引。这些数据集的文件格式大多是图片,所以只要按照这个帖子给sublime-text的配置加上:

"folder_exclude_patterns": [".svn", ".git", ".hg", "CVS", "node_modules/*"],
"binary_file_patterns": ["*.mat","*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip"],

问题就解决了。

不过对于ShapeNet这样的仍然没有办法==,所以最好还是避免用sublime-text打开带有数据集的文件夹(这种需要却并不少见,因为用软链接方便)。