/dev/null 的原理是什么?大量写入会影响系统性能吗?

2015-04-13 20:41:56 +08:00
 yjsslab
9350 次点击
所在节点    Linux
29 条回复
Admstor
2015-04-14 09:37:56 +08:00
我有时候会把暂时不需要的日志指向null,需要的时候再指向别的地方...
bellchu
2015-04-14 10:03:41 +08:00
bellchu
2015-04-14 10:18:25 +08:00
@wizardoz 有返回的,输出多少就返回多少
static ssize_t write_null(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{
return count;
}
fxxkgw
2015-04-14 16:15:02 +08:00
这个一般都是在脚本里面用的吧,特别是一些crontab定时器中执行的脚本,大部分作用是把无用或出错信息不显示。
如果考虑到使用的情况,将打印显示到界面的资源消耗量应远大于输入到/dev/null 所以个人感觉可以放心使用。
vonnyfly
2015-04-14 16:54:47 +08:00
这个return size一定要,不要的话,用户态write会返回失败。以前写驱动的时候这里返回值写0,导致用户态write失败。
ElmerZhang
2015-04-14 18:33:18 +08:00
write系统调用消耗的CPU很少了
ryd994
2015-04-14 23:35:06 +08:00
@bellchu 26楼
bellchu
2015-04-15 09:48:31 +08:00
@ryd994 这不是正好证明我的理解是正确的么。无IO或无延迟,大量system call积聚造成CPU占用率飙升。

BTW,昨天去楼下苹果店用这些命令给新Macbook烤机,开了四个线程的yes,CPU 100%,无风扇的机器居然不是很烫。。。。有点想买了,除了他那个纠结的键盘之外。
bellchu
2015-04-15 10:02:14 +08:00
@bellchu 再BTW,yes是纯输出的命令,而/dev/null是write only的设备。所以用yes才能演示楼主所说的大量写入的情况。

cat /dev/zero首先是从/dev/zero读取,然后写入/dev/null。所以system call的数量是read/write各占一半。

/dev/zero /dev/random /dev/null都是上世纪创造的东西了,现在很多人都在想怎么改良它们。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/183496

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX