为什么 Unix 块大小会随着内存大小的增加而增加?
Why does Unix block size increase with bigger memory size?
我正在分析具有
的二进制数据
- 当事件数量增加时,增加 Unix 块大小(一个来自
stat
> 块)
- 但事件之间的字节距离保持不变
- 我注意到文件的其他字段发生了一些变化,这可能解释了 Unix 块大小的增加
unix 块大小是一种动态度量。
我对为什么它在某些系统中随着更大的内存单元而增加感兴趣。
我有一个想法,它应该是不变的。
我使用不同的环境来提供 stat
输出:
- Debian Linux 8.1 及其默认
stat
- OSX 10.8.5 with Xcode 6 及其默认
stat
Greybeard 的评论可能对块行为有答案:
The stat (1) command used to be a thin CLI to the stat (2) system
call, which used to transfer relevant parts of a file's inode. Pretty
early on, the meaning of the st_blksize member of the C struct
returned by stat (2) was changed to "preferred" blocksize for
efficient file system I/O, which carries well to file systems with
mixed block sizes or non-block oriented allocation.
如何分别测量情况 (1) 和 (2) 的块大小?
为什么 Unix 块大小可以随着内存大小的增加而增加?
"Stat blocks" 不是块大小。它是文件组成的块数。很明显,块的数量与大小成正比。大多数文件系统(如果不是全部)的块大小是恒定的。
我正在分析具有
的二进制数据- 当事件数量增加时,增加 Unix 块大小(一个来自
stat
> 块) - 但事件之间的字节距离保持不变
- 我注意到文件的其他字段发生了一些变化,这可能解释了 Unix 块大小的增加
unix 块大小是一种动态度量。
我对为什么它在某些系统中随着更大的内存单元而增加感兴趣。
我有一个想法,它应该是不变的。
我使用不同的环境来提供 stat
输出:
- Debian Linux 8.1 及其默认
stat
- OSX 10.8.5 with Xcode 6 及其默认
stat
Greybeard 的评论可能对块行为有答案:
The stat (1) command used to be a thin CLI to the stat (2) system call, which used to transfer relevant parts of a file's inode. Pretty early on, the meaning of the st_blksize member of the C struct returned by stat (2) was changed to "preferred" blocksize for efficient file system I/O, which carries well to file systems with mixed block sizes or non-block oriented allocation.
如何分别测量情况 (1) 和 (2) 的块大小?
为什么 Unix 块大小可以随着内存大小的增加而增加?
"Stat blocks" 不是块大小。它是文件组成的块数。很明显,块的数量与大小成正比。大多数文件系统(如果不是全部)的块大小是恒定的。