Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 块文件写入的优点是什么_Linux_Performance_Io - Fatal编程技术网

Linux 块文件写入的优点是什么

Linux 块文件写入的优点是什么,linux,performance,io,Linux,Performance,Io,我想知道逐块写入文件的优点是什么。我认为这样可以减少io操作。但在类似linux的环境中,数据无论如何都会进入页面缓存和后台后台守护进程进行物理磁盘写入(如果我错了,请纠正我)。在这种环境中,块写入有什么好处 如果我没弄错你的问题,你是在问使用较大的块的好处,而不是一个字符一个字符地写 你必须考虑系统调用的每一个使用(例如)自身的最小成本,而不管正在做什么。此外,它可能会导致调用进程受到一个错误的影响,这有其自身的成本,还允许其他进程使用CPU,从而导致更大的延迟 因此,即使我们忘记了直接和同步

我想知道逐块写入文件的优点是什么。我认为这样可以减少io操作。但在类似linux的环境中,数据无论如何都会进入页面缓存和后台后台守护进程进行物理磁盘写入(如果我错了,请纠正我)。在这种环境中,块写入有什么好处

如果我没弄错你的问题,你是在问使用较大的块的好处,而不是一个字符一个字符地写

<>你必须考虑系统调用的每一个使用(例如)自身的最小成本,而不管正在做什么。此外,它可能会导致调用进程受到一个错误的影响,这有其自身的成本,还允许其他进程使用CPU,从而导致更大的延迟

因此,即使我们忘记了直接和同步I/O模式,在这种模式下,每个操作都可能立即将数据传输到磁盘上,从性能角度来看,通过移动较大的数据块来减少这些固定成本的影响也是有意义的

使用
dd
传输1000000字节的简单演示:

$ dd if=/dev/zero of=test.txt count=1000000 bs=1 # 1,000,000 blocks of 1 byte
1000000+0 records in
1000000+0 records out
1000000 bytes (1.0 MB) copied, 1.55779 s, 642 kB/s
$ dd if=/dev/zero of=test.txt count=100000 bs=10 # 100,000 blocks of 10 bytes
100000+0 records in
100000+0 records out
1000000 bytes (1.0 MB) copied, 0.172038 s, 5.8 MB/s
$ dd if=/dev/zero of=test.txt count=10000 bs=100 # 10,000 blocks of 100 bytes
10000+0 records in
10000+0 records out
1000000 bytes (1.0 MB) copied, 0.0262843 s, 38.0 MB/s
$ dd if=/dev/zero of=test.txt count=1000 bs=1000 # 1,000 blocks of 1,000 bytes
1000+0 records in
1000+0 records out
1000000 bytes (1.0 MB) copied, 0.0253754 s, 39.4 MB/s
$ dd if=/dev/zero of=test.txt count=100 bs=10000 # 100 blocks of 10,000 bytes
100+0 records in
100+0 records out
1000000 bytes (1.0 MB) copied, 0.00919108 s, 109 MB/s
另外一个好处是,使用较大的数据块可以让文件系统的I/O调度程序和分配器对实际工作负载做出更准确的估计