硬件环境
CPU: Intel® Xeon® Gold 6346 CPU @ 3.10GHz
MEM: 256G
OS: ubuntu 22.04
单线程顺序拷贝
10G Src Buffer —> 10G Dst buffer
分别按照 4K, 4M,64MB, 1GB的块大小进行拷贝。
使用的是 2MB Pagesize的大页内存,确保内存的连续性。
单线程顺序拷贝代码
int test_block2block(unsigned long block_size)
{
unsigned long i , cnt = 0;
unsigned long block_num = MEM_SIZE / block_size;
struct timeval start_time, end_time;
double elapsed_time;
gettimeofday(&start_time, NULL);
for (i = 0; i < block_num; ++i) {
void* src = buf + block_size * i;
void* dest = dest_buf + block_size * i;
memcpy(dest, src, block_size);
//memset(dest, cnt, BUF_SIZE);
cnt++;
}
//memcpy(dest_buf, buf, BUF_SIZE*MAX_NUM);
gettimeofday(&end_time, NULL);
elapsed_time = (end_time.tv_sec - start_time.tv_sec) +
(end_time.tv_usec - start_time.tv_usec) / 1000000.0;
unsigned long long pps = block_num / elapsed_time;
unsigned long long Bps = MEM_SIZE / elapsed_time;
char formatbuf[32] =