简述buffer/cache
- buffer在Linux中指buffer cache,中文一般读作“缓冲区”。理解缓冲区要理解“扇区”和“块”。
● 扇区:设备的最小寻址单元,也读作“硬扇区”或“设备块”。
● 块:操作系统中文件系统的最小寻址单元,也读作“文件块”或“I/O块”。
● 每个块包含一个或多个扇区,但大小不能超过一个页面,所以一个页可以容纳一个或多个内存中的块。当一个块被调入内存时,它要存储在一个缓冲区中。
● 每个缓冲区与一个块对应,它相当于磁盘块在内存中的表示。
● buffer cache只有块的概念而没有文件的概念,它只是把磁盘上的块直接搬到内存中而而不关心块中究竟存放的是什么格式的文件。
- cache在Linux中指page cache,中文一般读作“页高速缓存”。
● 页高速缓存时内核实现的磁盘缓存,主要用来减少对物理磁盘的I/O操作。在首次从磁盘中取出某些数据后,将该数据缓存到物理内存中,后续直接从内存中取数据。
● 页高速缓存的时内存页面,缓存中的页来自对普通文件、块设备文件(即buffer cache)和内存映射文件的读写。
清除buffer/cache脚本
#!/bin/bash
#将缓冲区的数据写入磁盘(清除buff)
sync
sync
sync
#释放页缓存
echo 1 > /proc/sys/vm/drop_caches
#释放dentries和inodes缓存
echo 2 > /proc/sys/vm/drop_caches
#释放页缓存和dentries、inodes缓存
echo 3 > /proc/sys/vm/drop_caches
echo "清除结束"
引用
- 理解buff/cache
- linux 清除buff/cache 缓存