Profile-Directed Restructuring of Operating System Code

In this paper we describe how a profiling system can be successfully used to restructure the components of an operating system for improved overall performance. We discuss our choice of a profiling system and how it was applied to the AS/400® (Application System/400®) operating system for the purpose of reordering code. Previous work in the industry has been mainly useful only for application programs. Our work demonstrates how such techniques can be applied to operating system code, while preserving maintainability of the operating system in the customer's environment.

[1]  Thomas C. Lowe Automatic segmentation of cyclic program structures based on connectivity and processor timing , 1970, CACM.

[2]  W. W. Hwu,et al.  Achieving high instruction cache performance with an optimizing compiler , 1989, ISCA '89.

[3]  Stephen J. Hartley Compile-Time Program Restructuring in Multiprogrammed Virtual Memory Systems , 1988, IEEE Trans. Software Eng..

[4]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[5]  Peter J. Denning,et al.  The Working Set Model for Program , 1968 .

[6]  Rowan Snyder On the application of a priori knowledge of program structure to the performance of virtual memory computer systems. , 1978 .

[7]  Donald J. Hatfield,et al.  Program Restructuring for Virtual Memory , 1971, IBM Syst. J..

[8]  Alan Jay Smith,et al.  Cache Memories , 1982, CSUR.

[9]  C. Ramamoorthy,et al.  The analytic design of a dynamic look ahead and program segmenting system for multiprogrammed computers , 1966, ACM '66.

[10]  Domenico Ferrari,et al.  Improving locality by critical working sets , 1974, CACM.

[11]  James R. Larus,et al.  Optimally profiling and tracing programs , 1992, POPL '92.

[12]  Youfeng Wu Ordering functions for improving memory reference locality in a shared memory multiprocessor system , 1992, MICRO 25.

[13]  Brian N. Bershad,et al.  The impact of operating system structure on memory system performance , 1994, SOSP '93.

[14]  Jean-Loup Baer,et al.  Segmentation and optimization of programs from cyclic structure analysis , 1899, AFIPS '72 (Spring).

[15]  FerranteJeanne,et al.  The program dependence graph and its use in optimization , 1987 .

[16]  Scott McFarling,et al.  Program optimization for instruction caches , 1989, ASPLOS III.

[17]  Randall R. Heisch Trace-directed program restructuring for AIX executables , 1994, IBM J. Res. Dev..

[18]  Edward W. Ver Hoef,et al.  Automatic program segmentation based on Boolean connectivity , 1971, AFIPS '71 (Spring).

[19]  Peter J. Denning Virtual Memory , 1996, ACM Comput. Surv..

[20]  Peter J. Denning,et al.  The working set model for program behavior , 1968, CACM.

[21]  Craig Partridge,et al.  Improving UNIX kernel performance using profile based optimization , 1994 .

[22]  Apostolos Dollas,et al.  Predicting and precluding problems with memory latency , 1994, IEEE Micro.

[23]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[24]  Shlomit S. Pinter,et al.  Compile time instruction cache optimizations , 1994, CARN.

[25]  Laszlo A. Belady,et al.  A Study of Replacement Algorithms for Virtual-Storage Computer , 1966, IBM Syst. J..

[26]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[27]  William Berg,et al.  Lessons learned from the OS/400 OO project , 1995, CACM.

[28]  Rajiv Gupta,et al.  Improving instruction cache behavior by reducing cache pollution , 1990, Proceedings SUPERCOMPUTING '90.