大IO尺寸
提高应用程序吞吐量(每次IO都会有执行固定开销:初始化缓冲区、系统调用、上下文切换、分 配内核元数据、检查进程权限和限制、映射地址到设备、执行内核和 驱动代码来执行I/O,以及,在最后释放元数据和缓冲区)
小IO尺寸
太大会浪费,如8KB的随机读取数据库选用128KB的IO尺寸
提高文件系统的读性能和内存的分配性能
缓存选择的要点为大小和缓存规则(完整性和一致性和成本综合)
提高写效率
缓冲区的操作是异步的,提供像MQ一样的作用(不如反过来说MQ像缓冲区)
系统等待某一事件发生的技术
poll和epoll的使用
锁的性能问题
锁本身创建和销毁会耗费资源,解锁和上锁会消耗资源,但锁的精细度太粗糙的话会浪费cpu资源
创建固定数目的锁,通过哈希表来选择哪个锁用于哪个数据结构
如图,为了最大程度的并行,哈希表的桶的数量应该大于或等于cpu的数目
NUMA环境下,最好让一Thread在一个cpu上绑定,但绑定也有可能发生冲突,要防止绑定冲突的发生