我工作的高性能I / O程序,我试图找到确定物理 (而不是逻辑 )字节的设备的磁盘块的大小与C ++的最佳途径。 我的研究迄今已导致我下面的代码片段:
#include <iostream>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char ** argv)
{
// file information including block size of the device
struct stat info;
// device to get block size from
char * device = "/mnt/hdb1";
if (stat(device, &info))
{
printf("stat() error");
strerror(errno);
exit(1);
}
printf("Prefered block size for '%s' is %i byte\n", device, info.st_blksize);
return 0;
}
该名男子页说,有关以下st_blksize
:
所述st_blksize字段给出了有效的文件系统I / O的“优选的”块大小。 (写入较小的块中一个文件可能导致低效的读 - 修改 - 重写)。
的,但如果它没有提及st_blksize
是逻辑或物理磁盘块大小。
所以,是st_blksize
物理盘块大小,以及如果是的话,则是检测物理盘块大小此最POSIX OS可移植的方法。