内存泄漏
有些进程并不需要管理他们的动态内存的使用。当需要时,它们简单地通过分配来获得,从来不用担心如何释放内存。这类程序包括编译器和其他一些运行一段固定的(或有限的)时间然后终止程序。当这种类型的程序终止时,所有内存都会被自动化回收。细心检查每一块内存是否需要回收纯属浪费时间,因为它们们(指前面说到的那些进程、应用程序)不会在被使用。
其他程序的生存时间要长一点。有些工具如日历管理器、邮件工具,以及操作系统本身经常需要数日设置数周运行,并需要管理动态内存的分配和回收。由于C语言通常并不使用垃圾收集器(自动确认并回收不在使用的内存块),这些C程序在使用malloc()和free()时,不得不非常慎重。堆经常回出现两种类型的问题:
- 释放或改写仍在使用的内存——称为“内存损坏”;
- 未释放不再使用的内存——称为“内存泄漏”
这是最难被调试发现的问题之一。如果每次已分配的内存块不再使用,而程序元并不释放它们,进程就会一边分配越来越多的内存,一边却并不释放哪些不再使用部分的内存。
每次调用malloc分配内存时,主义在以后要调用相应的free来释放它。如果不知道如何调用free与先前的malloc相对应,那么这种情况很可能已经造成内存泄漏了。一种简单的方法就是:在可能的时候使用alloca()来分配动态内存,以免上述情况,当离开调用alloca的函数时,它所分配的内存就会被释放掉。
但是显然,这种方法并不适用于那些,比创建他们的杉树生命期更长的结构,但如果对象的生命期在该函数结束前便已经终止,这种建立在堆栈上的动态内存分配是一种开销很小的选择。有些人不提倡使用alloca(),因为它并不是一种可移植的方法,如果处理器在硬件上不支持堆在,alloca()就很难高效的实现。
我们使用“内存泄漏”这个词,是因为一种稀有的资源被一个进程榨干。内存泄漏的主要可见症状就是,罪魁的进程速度减慢。原因是大体积的进程更有可能被系统换出(系统发生了进程切换,进程之间的调度),让别的进程运行,而且大的进程在换进换出时,花费的时间也更多。即使(从定义上将)泄漏的内存本身并不被引用,但是它仍可能存在页面中(内容自然是垃圾,没有用的),这样就增加了进程的工作页数量,降低了性能。
另外一点是,泄漏的内存往往比忘记释放的结构体要大,因为malloc所分配的内存通常会圆整为下一个大于申请数量的2的整数次方(如果申请了212B,会圆整为256B)。在资源有限的情况下,即使引起内存泄漏的进程并不运行,整个系统的运行速度也会被拖慢。从理论上讲,进程的最大地址空间可多达4GB。事实上在进程所泄漏的内存远未达到这个数量时,磁盘的交换区早已消耗殆尽。如果你在阅读本书的时间现在(1994)超过5年,也就是20世纪末时,你可能会对这个早已过时的限制忍俊不已。——事实上现在(2002)的主流及其仍然为32位,所以单个进程的空间显示仍为4GB,不过磁盘的容量已大大增加,如果出现诚征达到4GB而交换区尚未耗尽(理论上讲)这种情况也是有可能的。
如何检查内存泄漏?观察内存泄漏是一个两步骤的过程。
首先,使用swap命令观察还有多事啊可以交换的空间;
$/usr/sbin/swap -s
在一两分钟内,输入该指令三到四次,看看可用的交换区是否在减少。还可以使用其他的一些/usr/bin/*stat工具,如netstat、vmstat等。如果发现不断有内存被分配且从不释放,一个可能的解释就是有个进程出现了内存泄漏。
第二个步骤是,使用“ps -lu 用户名”命令来显示所有进程的大小。
确定可疑的进程,看看它是不是该为内存泄漏负责。你可能已经知道那个进程是罪魁祸首,不烦可以使用“ps -lu 用户名”命令来显示所有进程的大小,标题为SZ的列就是以页面数表示进程的大小(如果一定想知道以KB表示页面的大小,可以使用pagesize命令)。通样次数反复重复这个命令,可以发现,任何动态分配内存的进程的大小都在增长。如果是一个进程看上去不断增长而从不缩小,它就有可能出现了内存泄漏。一个非常悲哀的现实是,管理动态内存时一项非常困难的编程任务。
如下面所示:
个人用户
zhang@ubuntu1404198:/mnt/external/zhang$ ps -lu zhang
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 2847 1 0 80 0 - 3293213 futex_ ? 1-01:27:35 java
0 R 1000 5462 15059 0 80 0 - 4295 - pts/1 00:00:00 ps
5 S 1000 9471 9338 0 80 0 - 66651 - ? 00:00:00 sshd
0 S 1000 9472 9471 0 80 0 - 5555 wait_w pts/2 00:00:02 bash
5 S 1000 15058 14923 0 80 0 - 66678 - ? 00:00:15 sshd
0 S 1000 15059 15058 0 80 0 - 5594 wait pts/1 00:00:05 bash
5 S 1000 28153 28082 0 80 0 - 66644 - ? 00:00:09 sshd
0 S 1000 28154 28153 0 80 0 - 5553 wait_w pts/0 00:00:00 bash
zhang@ubuntu1404198:/mnt/external/jenkins/zhang$
root用户
zhang@ubuntu1404198:/mnt/external/jenkins/zhang$ ps -lu root
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 8384 - ? 00:00:52 init
1 S 0 2 0 0 80 0 - 0 - ? 00:00:19 kthreadd
1 S 0 3 2 0 80 0 - 0 - ? 00:38:37 ksoftirqd/0
1 S 0 5 2 0 60 -20 - 0 - ? 00:00:00 kworker/0:0H
1 S 0 6 2 0 80 0 - 0 - ? 00:00:00 kworker/u32:0
1 S 0 8 2 0 80 0 - 0 - ? 01:50:41 rcu_sched
1 S 0 9 2 0 80 0 - 0 - ? 00:00:00 rcu_bh
1 S 0 10 2 0 -40 - - 0 - ? 00:05:21 migration/0
5 S 0 11 2 0 -40 - - 0 - ? 00:01:36 watchdog/0
5 S 0 12 2 0 -40 - - 0 - ? 00:01:11 watchdog/1
1 S 0 13 2 0 -40 - - 0 - ? 00:05:16 migration/1
1 S 0 14 2 0 80 0 - 0 - ? 00:09:15 ksoftirqd/1
1 S 0 16 2 0 60 -20 - 0 - ? 00:00:00 kworker/1:0H
5 S 0 17 2 0 -40 - - 0 - ? 00:01:11 watchdog/2
1 S 0 18 2 0 -40 - - 0 - ? 00:05:10 migration/2
1 S 0 19 2 0 80 0 - 0 - ? 00:09:19 ksoftirqd/2
1 S 0 21 2 0 60 -20 - 0 - ? 00:00:00 kworker/2:0H
5 S 0 22 2 0 -40 - - 0 - ? 00:01:14 watchdog/3
1 S 0 23 2 0 -40 - - 0 - ? 00:05:05 migration/3
1 S 0 24 2 0 80 0 - 0 - ? 00:09:17 ksoftirqd/3
1 S 0 26 2 0 60 -20 - 0 - ? 00:00:00 kworker/3:0H
5 S 0 27 2 0 -40 - - 0 - ? 00:01:16 watchdog/4
1 S 0 28 2 0 -40 - - 0 - ? 00:05:03 migration/4
1 S 0 29 2 0 80 0 - 0 - ? 00:09:27 ksoftirqd/4
1 S 0 31 2 0 60 -20 - 0 - ? 00:00:00 kworker/4:0H
5 S 0 32 2 0 -40 - - 0 - ? 00:01:13 watchdog/5
1 S 0 33 2 0 -40 - - 0 - ? 00:04:59 migration/5
1 S 0 34 2 0 80 0 - 0 - ? 00:09:19 ksoftirqd/5
1 S 0 36 2 0 60 -20 - 0 - ? 00:00:00 kworker/5:0H
5 S 0 37 2 0 -40 - - 0 - ? 00:01:13 watchdog/6
1 S 0 38 2 0 -40 - - 0 - ? 00:05:00 migration/6
1 S 0 39 2 0 80 0 - 0 - ? 00:09:03 ksoftirqd/6
1 S 0 41 2 0 60 -20 - 0 - ? 00:00:00 kworker/6:0H
5 S 0 42 2 0 -40 - - 0 - ? 00:01:11 watchdog/7
1 S 0 43 2 0 -40 - - 0 - ? 00:04:56 migration/7
1 S 0 44 2 0 80 0 - 0 - ? 00:09:07 ksoftirqd/7
1 S 0 45 2 0 80 0 - 0 - ? 00:00:00 kworker/7:0
1 S 0 46 2 0 60 -20 - 0 - ? 00:00:00 kworker/7:0H
5 S 0 47 2 0 -40 - - 0 - ? 00:01:20 watchdog/8
1 S 0 48 2 0 -40 - - 0 - ? 00:05:09 migration/8
1 S 0 49 2 0 80 0 - 0 - ? 00:12:33 ksoftirqd/8
1 S 0 51 2 0 60 -20 - 0 - ? 00:00:00 kworker/8:0H
5 S 0 53 2 0 -40 - - 0 - ? 00:01:10 watchdog/9
1 S 0 54 2 0 -40 - - 0 - ? 00:05:24 migration/9
1 S 0 55 2 0 80 0 - 0 - ? 00:08:44 ksoftirqd/9
1 S 0 57 2 0 60 -20 - 0 - ? 00:00:00 kworker/9:0H
5 S 0 58 2 0 -40 - - 0 - ? 00:01:09 watchdog/10
1 S 0 59 2 0 -40 - - 0 - ? 00:05:16 migration/10
1 S 0 60 2 0 80 0 - 0 - ? 00:08:48 ksoftirqd/10
1 S 0 61 2 0 80 0 - 0 - ? 00:00:00 kworker/10:0
1 S 0 62 2 0 60 -20 - 0 - ? 00:00:00 kworker/10:0H
5 S 0 63 2 0 -40 - - 0 - ? 00:01:14 watchdog/11
1 S 0 64 2 0 -40 - - 0 - ? 00:05:13 migration/11
1 S 0 65 2 0 80 0 - 0 - ? 00:08:43 ksoftirqd/11
1 S 0 66 2 0 80 0 - 0 - ? 00:00:00 kworker/11:0
1 S 0 67 2 0 60 -20 - 0 - ? 00:00:00 kworker/11:0H
5 S 0 68 2 0 -40 - - 0 - ? 00:01:19 watchdog/12
1 S 0 69 2 0 -40 - - 0 - ? 00:05:08 migration/12
1 S 0 70 2 0 80 0 - 0 - ? 00:08:24 ksoftirqd/12
1 S 0 71 2 0 80 0 - 0 - ? 00:00:00 kworker/12:0
1 S 0 72 2 0 60 -20 - 0 - ? 00:00:00 kworker/12:0H
5 S 0 73 2 0 -40 - - 0 - ? 00:01:08 watchdog/13
1 S 0 74 2 0 -40 - - 0 - ? 00:05:09 migration/13
1 S 0 75 2 0 80 0 - 0 - ? 00:08:29 ksoftirqd/13
1 S 0 76 2 0 80 0 - 0 - ? 00:00:00 kworker/13:0
1 S 0 77 2 0 60 -20 - 0 - ? 00:00:00 kworker/13:0H
5 S 0 78 2 0 -40 - - 0 - ? 00:01:07 watchdog/14
1 S 0 79 2 0 -40 - - 0 - ? 00:05:06 migration/14
1 S 0 80 2 0 80 0 - 0 - ? 00:08:28 ksoftirqd/14
1 S 0 81 2 0 80 0 - 0 - ? 00:00:00 kworker/14:0
1 S 0 82 2 0 60 -20 - 0 - ? 00:00:00 kworker/14:0H
5 S 0 83 2 0 -40 - - 0 - ? 00:01:06 watchdog/15
1 S 0 84 2 0 -40 - - 0 - ? 00:05:06 migration/15
1 S 0 85 2 0 80 0 - 0 - ? 00:08:28 ksoftirqd/15
1 S 0 86 2 0 80 0 - 0 - ? 00:00:00 kworker/15:0
1 S 0 87 2 0 60 -20 - 0 - ? 00:00:00 kworker/15:0H
5 S 0 88 2 0 80 0 - 0 - ? 00:00:00 kdevtmpfs
1 S 0 89 2 0 60 -20 - 0 - ? 00:00:00 netns
1 S 0 90 2 0 60 -20 - 0 - ? 00:00:00 perf
1 S 0 91 2 0 80 0 - 0 - ? 00:00:28 khungtaskd
1 S 0 92 2 0 60 -20 - 0 - ? 00:00:10 writeback
1 S 0 93 2 0 85 5 - 0 - ? 00:00:00 ksmd
1 S 0 94 2 0 99 19 - 0 - ? 00:00:00 khugepaged
1 S 0 95 2 0 60 -20 - 0 - ? 00:00:00 crypto
1 S 0 96 2 0 60 -20 - 0 - ? 00:00:00 kintegrityd
1 S 0 97 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 98 2 0 60 -20 - 0 - ? 00:00:00 kblockd
1 S 0 99 2 0 60 -20 - 0 - ? 00:00:00 ata_sff
1 S 0 100 2 0 60 -20 - 0 - ? 00:00:00 md
1 S 0 101 2 0 60 -20 - 0 - ? 00:00:00 devfreq_wq
1 S 0 103 2 0 80 0 - 0 - ? 00:12:53 kworker/11:1
1 S 0 105 2 0 80 0 - 0 - ? 02:20:43 kswapd0
1 S 0 106 2 0 80 0 - 0 - ? 01:37:45 kswapd1
1 S 0 107 2 0 60 -20 - 0 - ? 00:00:00 vmstat
1 S 0 108 2 0 80 0 - 0 - ? 00:00:02 fsnotify_mark
1 S 0 109 2 0 80 0 - 0 - ? 00:00:00 ecryptfs-kthrea
1 S 0 125 2 0 60 -20 - 0 - ? 00:00:00 kthrotld
1 S 0 128 2 0 80 0 - 0 - ? 00:00:58 kworker/2:1
1 S 0 132 2 0 80 0 - 0 - ? 00:00:22 kworker/6:1
1 S 0 133 2 0 80 0 - 0 - ? 00:01:02 kworker/7:1
1 S 0 134 2 0 80 0 - 0 - ? 00:46:25 kworker/8:1
1 S 0 136 2 0 80 0 - 0 - ? 00:03:34 kworker/10:1
1 S 0 137 2 0 80 0 - 0 - ? 00:21:06 kworker/12:1
1 S 0 138 2 0 80 0 - 0 - ? 00:02:33 kworker/13:1
1 S 0 139 2 0 80 0 - 0 - ? 00:02:26 kworker/14:1
1 S 0 140 2 0 80 0 - 0 - ? 00:02:31 kworker/15:1
1 S 0 141 2 0 60 -20 - 0 - ? 00:00:00 acpi_thermal_pm
1 S 0 142 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 143 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 144 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 145 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 146 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 147 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 148 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 149 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 150 2 0 80 0 - 0 - ? 00:00:00 scsi_eh_0
1 S 0 151 2 0 60 -20 - 0 - ? 00:00:00 scsi_tmf_0
1 S 0 152 2 0 80 0 - 0 - ? 00:00:00 scsi_eh_1
1 S 0 153 2 0 60 -20 - 0 - ? 00:00:00 scsi_tmf_1
1 S 0 159 2 0 60 -20 - 0 - ? 00:00:00 ipv6_addrconf
1 S 0 172 2 0 60 -20 - 0 - ? 00:00:00 deferwq
1 S 0 173 2 0 80 0 - 0 - ? 00:10:54 kworker/u32:1
1 S 0 174 2 0 60 -20 - 0 - ? 00:00:00 charger_manager
1 S 0 250 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 251 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 252 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 253 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 254 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 255 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 256 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 257 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 258 2 0 60 -20 - 0 - ? 00:00:00 mpt_poll_0
1 S 0 259 2 0 60 -20 - 0 - ? 00:00:00 mpt/0
1 S 0 260 2 0 60 -20 - 0 - ? 00:00:00 kpsmoused
1 S 0 269 2 0 80 0 - 0 - ? 00:00:00 scsi_eh_2
1 S 0 270 2 0 60 -20 - 0 - ? 00:00:00 scsi_tmf_2
1 S 0 272 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 274 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 299 2 0 60 -20 - 0 - ? 00:00:00 kdmflush
1 S 0 300 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 303 2 0 60 -20 - 0 - ? 00:00:00 kdmflush
1 S 0 304 2 0 60 -20 - 0 - ? 00:00:00 bioset
1 S 0 321 2 0 80 0 - 0 - ? 00:14:42 jbd2/dm-0-8
1 S 0 322 2 0 60 -20 - 0 - ? 00:00:00 ext4-rsv-conver
1 S 0 460 1 0 80 0 - 4945 - ? 00:00:00 upstart-udev-br
5 S 0 465 1 0 80 0 - 13063 - ? 00:00:00 systemd-udevd
1 S 0 544 2 0 60 -20 - 0 - ? 00:00:00 ext4-rsv-conver
1 S 0 563 2 0 80 0 - 0 - ? 00:44:51 jbd2/sdb-8
1 S 0 564 2 0 60 -20 - 0 - ? 00:00:00 ext4-rsv-conver
1 S 0 602 2 0 60 -20 - 0 - ? 00:00:00 ttm_swap
1 S 0 740 1 0 80 0 - 3818 - ? 00:00:00 upstart-socket-
1 S 0 753 2 0 80 0 - 0 - ? 01:02:56 kworker/4:2
4 S 0 948 1 0 80 0 - 57849 - ? 00:00:46 winbindd
4 S 0 951 1 0 80 0 - 68394 - ? 00:19:23 smbd
4 S 0 1039 1 0 80 0 - 10873 - ? 00:00:00 systemd-logind
1 S 0 1063 1 0 80 0 - 3822 - ? 00:00:00 upstart-file-br
1 S 0 1093 948 0 80 0 - 59416 - ? 00:02:19 winbindd
5 S 0 1097 1 0 80 0 - 47876 - ? 00:40:42 nmbd
1 S 0 1151 2 0 60 -20 - 0 - ? 00:00:13 kworker/8:1H
1 S 0 1153 948 0 80 0 - 57746 - ? 00:01:05 winbindd
1 S 0 1160 948 0 80 0 - 57849 - ? 00:01:23 winbindd
5 S 0 1178 951 0 80 0 - 68394 - ? 00:02:42 smbd
4 S 0 1181 1 0 80 0 - 3637 - tty4 00:00:00 getty
4 S 0 1184 1 0 80 0 - 3637 - tty5 00:00:00 getty
4 S 0 1190 1 0 80 0 - 3637 - tty2 00:00:00 getty
4 S 0 1191 1 0 80 0 - 3637 - tty3 00:00:00 getty
4 S 0 1193 1 0 80 0 - 3637 - tty6 00:00:00 getty
1 S 0 1209 1 0 80 0 - 5916 - ? 00:02:04 cron
4 S 0 1211 1 0 80 0 - 15347 - ? 00:00:00 sshd
1 S 0 1226 2 0 60 -20 - 0 - ? 00:00:06 kworker/0:1H
5 S 0 1231 1 0 80 0 - 4829 - ? 01:10:57 irqbalance
1 S 0 1254 2 0 60 -20 - 0 - ? 00:00:04 kworker/4:1H
1 S 0 1266 1 0 80 0 - 1095 - ? 00:00:00 acpid
4 S 0 1278 1 0 80 0 - 40914 - ? 04:06:44 vmtoolsd
1 S 0 1368 2 0 60 -20 - 0 - ? 00:00:04 kworker/3:1H
1 S 0 1373 2 0 60 -20 - 0 - ? 00:00:05 kworker/7:1H
1 S 0 1374 2 0 60 -20 - 0 - ? 00:00:03 kworker/14:1H
1 S 0 1375 2 0 60 -20 - 0 - ? 00:00:06 kworker/9:1H
1 S 0 1393 2 0 60 -20 - 0 - ? 00:00:08 kworker/15:1H
1 S 0 1396 2 0 60 -20 - 0 - ? 00:00:02 kworker/13:1H
1 S 0 1411 2 0 60 -20 - 0 - ? 00:00:07 kworker/5:1H
1 S 0 1422 2 0 80 0 - 0 - ? 00:00:00 kauditd
1 S 0 1430 2 0 60 -20 - 0 - ? 00:00:05 kworker/1:1H
1 S 0 1466 2 0 60 -20 - 0 - ? 00:00:03 kworker/10:1H
1 S 0 1480 2 0 60 -20 - 0 - ? 00:00:04 kworker/11:1H
1 S 0 1498 2 0 60 -20 - 0 - ? 00:00:06 kworker/2:1H
1 S 0 1512 2 0 60 -20 - 0 - ? 00:00:02 kworker/12:1H
1 S 0 1568 2 0 60 -20 - 0 - ? 00:00:05 kworker/6:1H
4 S 0 3513 1 0 80 0 - 3637 - tty1 00:00:00 getty
1 S 0 4768 2 0 80 0 - 0 - ? 00:00:00 kworker/u33:0
1 S 0 5067 2 0 80 0 - 0 - ? 00:00:00 kworker/u33:1
1 S 0 5403 2 0 80 0 - 0 - ? 00:00:00 kworker/u34:2
1 S 0 5436 2 0 80 0 - 0 - ? 00:00:00 kworker/u34:1
1 S 0 6685 2 0 80 0 - 0 - ? 00:02:55 kworker/9:0
5 S 0 9267 951 0 80 0 - 70340 - ? 00:00:01 smbd
4 S 0 9338 1211 0 80 0 - 66651 - ? 00:00:00 sshd
1 S 0 11587 2 0 80 0 - 0 - ? 00:00:09 kworker/5:0
4 S 0 14923 1211 0 80 0 - 66678 - ? 00:00:00 sshd
1 S 0 14926 2 0 80 0 - 0 - ? 00:00:04 kworker/2:2
1 S 0 17844 2 0 80 0 - 0 - ? 00:00:42 kworker/5:2
1 S 0 18432 2 0 80 0 - 0 - ? 00:55:48 kworker/8:0
1 S 0 19268 2 0 80 0 - 0 - ? 00:00:07 kworker/3:0
1 S 0 19452 2 0 80 0 - 0 - ? 00:00:41 kworker/0:1
1 S 0 21102 2 0 80 0 - 0 - ? 00:00:32 kworker/9:2
5 S 0 23424 951 0 80 0 - 70399 - ? 00:00:19 smbd
1 S 0 23464 2 0 80 0 - 0 - ? 00:00:49 kworker/6:2
1 S 0 27406 2 0 80 0 - 0 - ? 00:00:36 kworker/3:1
1 S 0 27615 2 0 80 0 - 0 - ? 00:00:13 kworker/0:0
1 S 0 27897 2 0 80 0 - 0 - ? 00:00:00 kworker/1:1
4 S 0 28082 1211 0 80 0 - 66644 - ? 00:00:02 sshd
1 S 0 28094 2 0 80 0 - 0 - ? 00:00:10 kworker/1:2
1 S 0 31391 2 0 80 0 - 0 - ? 00:35:03 kworker/4:1
zhang@ubuntu1404198:/mnt/external/jenkins/zhang$
未完待续......