86 research outputs found

    Understanding Suspend/Resume Path of Linux Device Drivers

    Get PDF
    Suspend/Resume (S/R), stands for putting mobile devices into sleep mode and wakes them up. Such a S/R process is heavily used in mobile devices today. While controlling by the operating system (OS), S/R process consumes a dominating portion of energy. In order to minimize the power consumption, we have to understand what happens on the S/R Path of modern device drivers so that further solutions reducing the overhead in that process can be found. In a modern OS, device drivers can make up over 70% of the source code, while still heavily dependent on the rest of the OS. Such a property made analyzing the driver code an extremely complicated and important task. We built a static code analysis tool and using the tool, we were able to quantitatively analyze the S/R path of Linux device drivers. By comparing different versions, we observed the evolution of Linux S/R path over time. In this paper, we present a quantitative analysis of Linux driver codes on the S/R path and show how they evolve over time

    Decelerating I/O Power Management

    Get PDF
    System suspend/resume is crucial to energy proportionality of modern computers, from wearable to cloud servers. Ironically, this OS mechanism itself is slow and energy hungry. Through characterizing the Linux kernel on a variety of modern system-on-chips (SoCs), we show the major reason as slow power state transitions of IO, which keeps CPU waiting. Furthermore, we argue that the IO wait can hardly be reduced to a satisfactory level, because most of slow transitions of IO are bounded by peripherals, low-speed buses, or physical factors. Therefore, the kernel execution for suspend/resume should be offloaded to a miniature core that waits more efficiently. To fix this problem, we propose a power management core running novel hypervisor that dynamically translates and executes Power Management functions. This method not only supports offloading a complex kernel subsystem but also provides forward compatibility with a commodity kernel. Based on QEMU, an open source hypervisor, we implement the backend for ARMv7M ISA. We optimize QEMU’s translation by directly mapping flag emulation to hardware. In the end, we are able to achieve 100% increase performance compared with QEMU’s original version
    • …
    corecore