Adaptive Dispatch: A Pattern for Performance-Aware Software Self-Adaptation

Modern software systems often employ dynamic adaptation to runtime conditions in some parts of their functionality -- well known examples range from autotuning of computing kernels through adaptive battery saving strategies of mobile applications to dynamic load balancing and failover functionality in computing clouds. Typically, the implementation of these features is problem-specific -- a particular autotuner, a particular load balancer, and so on -- and enjoys little support from the implementation environment beyond standard programming constructs. In this work, we propose Adaptive Dispatch as a generic coding pattern for implementing dynamic adaptation. We believe that such pattern can make the implementation of dynamic adaptation features better in multiple aspects -- an explicit adaptation construct makes the presence of adaptation easily visible to programmers, lends itself to manipulation with development tools, and facilitates coordination of adaptation behavior at runtime. We present an implementation of the Adaptive Dispatch pattern as an internal DSL in Scala.

[1]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[2]  Ling Huang,et al.  Predicting Execution Time of Computer Programs Using Sparse Polynomial Regression , 2010, NIPS.

[3]  Petr Tuma,et al.  Performance Awareness in Component Systems: Vision Paper , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference Workshops.

[4]  Ralf H. Reussner,et al.  Performance Prediction for Black-Box Components Using Reengineered Parametric Behaviour Models , 2008, CBSE.

[5]  Warren Smith,et al.  Predicting Application Run Times Using Historical Information , 1998, JSSPP.

[6]  Matteo Frigo,et al.  A fast Fourier transform compiler , 1999, SIGP.

[7]  Ugo Montanari,et al.  Software Engineering for Collective Autonomic Systems: The ASCENS Approach , 2015 .

[8]  José M. F. Moura,et al.  Spiral: A Generator for Platform-Adapted Libraries of Signal Processing Alogorithms , 2004, Int. J. High Perform. Comput. Appl..

[9]  Ling Huang,et al.  Mantis: Predicting System Performance through Program Analysis and Modeling , 2010, ArXiv.

[10]  Peyman Oreizy,et al.  Runtime software adaptation: framework, approaches, and styles , 2008, ICSE Companion '08.

[11]  Shoaib Kamil,et al.  OpenTuner: An extensible framework for program autotuning , 2014, 2014 23rd International Conference on Parallel Architecture and Compilation (PACT).

[12]  Petr Tuma,et al.  Unit testing performance with Stochastic Performance Logic , 2017, Automated Software Engineering.

[13]  W. Cleveland,et al.  Regression by local fitting: Methods, properties, and computational algorithms , 1988 .

[14]  Simon Goldsmith,et al.  Measuring empirical computational complexity , 2007, ESEC-FSE '07.

[15]  Dror G. Feitelson,et al.  Development and Deployment at Facebook , 2013, IEEE Internet Computing.

[16]  Jack J. Dongarra,et al.  Automatically Tuned Linear Algebra Software , 1998, Proceedings of the IEEE/ACM SC98 Conference.

[17]  Steven G. Johnson,et al.  FFTW: an adaptive software architecture for the FFT , 1998, Proceedings of the 1998 IEEE International Conference on Acoustics, Speech and Signal Processing, ICASSP '98 (Cat. No.98CH36181).

[18]  Nora Koch,et al.  Software Engineering for Collective Autonomic Systems , 2015, Lecture Notes in Computer Science.