#include #include #include #include #include #include #include #include uint64_t NowMicros() { struct timeval tv; gettimeofday(&tv, NULL); return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; } int main() { uint64_t st, ed; uint64_t file_size = 10LL * 1024LL * 1024LL * 1024LL; int fd = open("/disk11/tf", O_CREAT | O_RDWR, 0666); int ret; unsigned char *aligned_buf; int dsize = 512; ret = posix_memalign((void **)&aligned_buf, 4096, 4096 * 10); for (int i = 0; i < dsize; i++) { aligned_buf[i] = (int)random() % 128; } lseek(fd, 0, SEEK_SET); st = NowMicros(); int num; off_t off = 0; for (uint64_t i = 0; i < file_size / dsize; i++) { num = pwrite(fd, aligned_buf, dsize, off); off += 512; // fsync(fd); if (num != dsize) { printf("write error num %d\n", num); return -1; } } ed = NowMicros(); printf("write time microsecond(us) %lld\n", ed - st); return 0; }