《构建高性能Web站点》笔记:3.5 I/O
I/O
1.内存I/O一般不是瓶颈,网络I/O和磁盘I/O才是关键
2.提升网络性能:独享高带宽,高速网卡
3.提高磁盘性能:使用RAID,并行读写
4.不管用多好的外设,I/O都仍要走系统调用的路子。系统调用会产生开销,而且CPU还是经常要等待。因此,有些机器设计了一些不走cpu的技术,如DMA: 不通过CPU,而让DMA控制器直接进行磁盘和内存的数据交换; 这样虽然不能提升I/O速率,但可以节省CPU资源
以下我还不太懂,需要研究一下linux操作系统原理才好说。这里先记下一些关键字
1. 阻塞式I/O,非阻塞式I/O ?
2. 内存映射: 建立内存与磁盘的映射关系,写到内存的东西会同步到磁盘上
3. 直接I/O: 不使用内核缓冲区(内存与磁盘间的一个缓存),而是程序自己建立一个用户态的缓冲区,以实现自己想要的缓存策略
4. sendfile:把数据从磁盘读到写给网卡时,不使用内核缓冲区和内存,而是直接将磁盘数据发给socket;这对静态文件的获取很有帮助
5. 异步I/O