IO成本就是寻址时间和上下文切换所需要的时间,最主要是用户态和内核态的上下文切换。
- 寻址时间
磁头从启动位置到达所要求的读/写位置所经历的全部时间,它包括寻道时间(Seektime)和平均等待时间(Rotationdelayorlatencytime)两部分。 - 上下文切换
这里的上下文切换指的是同进程的线程上下文切换,所谓上下文就是线程运行需要的环境信息。
用户态是无法直接访问磁盘等硬件上的数据的,只能通过操作系统去调内核态的接口,用内核态的线程去访问。
- 首先,用户态线程需要一些中间计算结果保存CPU寄存器,保存CPU指令的地址到程序计数器(执行顺序保证),还要保存栈的信息等一些线程私有的信息。
- 然后切换到内核态的线程执行,就需要把线程的私有信息从寄存器,程序计数器里读出来,然后执行读磁盘上的数据。读完后返回,又要把线程的信息写进寄存器和程序计数器。
- 切换到用户态后,用户态线程又要读之前保存的线程执行的环境信息出来,恢复执行。
这个过程是消耗时间资源的。
来自《Linux性能优化实战》里的知识 SQL执行前优化器对SQL进行优化,这个过程还需要占用CPU资源
网友评论