论文部分内容阅读
随着集成电路的摩尔定律的继续发展,单个芯片内部集成的处理器核数量越来越多,未来一块芯片就可以容纳上千个核;另一方面,考虑到功耗和性能的平衡,这些核中的一些核的计算能力比较强大,可以更快地处理单线程任务,而更多的核则设计的比较简单,用来并行处理大量的小程序。硬件平台的变化导致软件结构必须做出相应的改变,特别是最基础的操作系统的结构必须能够适应多核和异构的趋势。但是,传统的SMP操作系统因为大量的锁竞争导致其无法高效地管理如此众多的计算资源,特别地,这种同构的操作系统完全无法有效利用异构多核带来的优势。
本文在详细分析同构SMP操作系统对应用程序性能影响的前提下,提出了一种异构操作系统内核的设计方法。该方法在逻辑上将操作系统分为三个部分:运行时环境、内核服务器和中断处理程序。运行时环境是一段轻量级的代码,与应用程序一起独占一个核,用来将应用程序对操作系统的请求转发到合适的内核服务器;内核服务器则包括很多个具备特定功能的单线程程序,每个程序提供一种操作系统的服务,包括文件系统、网络、内存管理和进程管理等;中断处理程序用来处理硬件发出的中断请求,如磁盘中断和网卡中断等。根据此方法实现了一个原型系统--GenerOS,它基于Linux-2.6.25内核,在确保兼容性的前提下,可以运行在任何x8664多核平台上。实验表明,两个典型的服务器程序在GenerOS上比在Linux上表现出更好的性能,其中,采用Oracle数据库的 TPC-H性能提升19.6%,采用Apache服务器的httperf性能提升42.8%。
运行时环境连接应用程序与内核服务器,在内核态实现则每次系统调用请求都需要从用户态切换到内核态进行转发,开销较大。本文提出一种通过修改lib库中各个系统调用的方法,使得它们可以在用户态直接转发到内核服务器,而不需要额外的用户态到内核态的切换开销。实验显示,不仅单个系统调用的执行时间可以减少,整个系统吞吐量也能够获得提高。
具有不同特征的应用程序对操作系统的需求可能不同,即便同一个应用程序,在执行过程的不同阶段对操作系统的需求也可能是不一样的,异构操作系统必须能够适应这种变化才能更好地发挥硬件的性能。本文提出了一种自适应的异构操作系统设计方法,通过动态探测应用程序对操作系统的需求,操作系统的结构可以进行自适应的调整。此方法实现在GenerOS中,实验显示,对于那些在不同阶段对操作系统有不同需求的应用程序,自适应调整的方法可以提升其性能。