HPC Note

本文记录HPC相关的笔记

Zero-Copy

假定我们需要复制一个文件的内容到另一个文件去,使用JAVA我们可能使用如下代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
FileInputStream in = new FileInputStream("in.txt");
FileOutputStream out = new FileOutputStream("out.txt");
int c;

while ((c = in.read()) != -1) {
    out.write(c);
}

in.close();
out.close();

即先从文件读取内容然后在写入到另一个文集中。在这个任务中会产生如下操作;

  1. 读操作 此处会出现两次复制操作和两次context switching
  • DMA从disk复制数据至read buffer
  • 从read buffer复制数据到application buffer
  1. 写操作 此处会出现两次复制操作和两次context switching
  • 从application buffer复制数据到write buffer
  • DMA从write buffer复制数据至disk

为了解决上面多次的数据复制和context切换,引入了Zero Copy,直接在kernel context 下我们从read buffer复制数据到write buffer.

Reference

  1. Understanding about Zero-Copy
updatedupdated2021-11-062021-11-06