更新时间:2023-06-19 18:25
设备驱动程序无法对高端内存执行直接内存访问I/O。相反,内核在低端内存中分配缓冲区,数据通过内核缓冲区在高端内存和设备驱动程序之间传输。这个内核缓冲区通常称为回弹缓冲区(bounce buffer),该过程被称为回弹或回弹缓冲。
在早期的Linux 内核(早期的2.4及先前的内核版本)中,设备驱动程序无法直接访问高端内存中的虚址。换句话说,这些设备驱动程序无法对高端内存执行直接内存访问I/O。相反,内核在低端内存中分配缓冲区,数据通过内核缓冲区在高端内存和设备驱动程序之间传输。这个内核缓冲区通常称为回弹缓冲区(bounce buffer),该过程被称为回弹或回弹缓冲。由于数据库服务器的I/O密集特征,回弹过程严重地降低了数据库服务器的性能。首先,回弹缓冲区会消耗低端内存,这可能导致内存短缺问题。其次,过量的回弹操作会引起系统占用时间较长,导致数据库系统完全变成CPU绑定的。数据库服务器性能领域的一个主要进展即是在最近的内核中消除了回弹缓冲机制。