Adaptive Performance Monitoring for Embedded Multicore Systems

With the advent of multicore processors, the performance of software has been elevated to new unforeseen heights via parallelization. However, this has not been achieved without new problems cropping up due to parallelization. One serious issue is the performance bottleneck due to cache misses or resource starvation, which is hard to detect in application software especially when the software has dynamically changing behavior. Performance monitors are usually employed for such purposes. Nevertheless, monitors have introduced their own computation and communication overheads, especially in embedded multicore systems. In this work, we try to estimate the effects of monitor overheads on different types of applications, such as CPU-bound and IO-bound tasks. Further, we give suggestions on the number and type of monitors to use for such embedded multicore applications. Besides trying to reduce monitor overheads, we also aim for the accuracy and the immediacy of the monitored information. Through a real-world example, namely digital video recording system, we demonstrate how different monitoring periods affect the tradeoff between accuracy and immediacy of the monitored information.

[1]  Yao Guo,et al.  A Lightweight Dynamic Performance Monitoring Framework for Embedded Systems , 2009, 2009 International Conference on Embedded Software and Systems.

[2]  James Newsom,et al.  Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software, Network and Distributed System Security Symposium Conference Proceedings : 2005 , 2005 .

[3]  Robert O. Hastings,et al.  Fast detection of memory leaks and access errors , 1991 .

[4]  Pao-Ann Hsiung,et al.  VERTAF/Multi-Core: A SysML-Based Application Framework for Multi-Core Embedded Software Development , 2011, Journal of Computer Science and Technology.

[5]  Babak Falsafi,et al.  Log-based architectures for general-purpose monitoring of deployed code , 2006, ASID '06.

[6]  Guru Venkataramani,et al.  MemTracker: Efficient and Programmable Support for Memory Access Monitoring and Debugging , 2007, 2007 IEEE 13th International Symposium on High Performance Computer Architecture.

[7]  Yan Solihin,et al.  HeapMon: A helper-thread approach to programmable, automatic, and low-overhead memory bug detection , 2006, IBM J. Res. Dev..

[8]  James Reinders,et al.  Intel threading building blocks - outfitting C++ for multi-core processor parallelism , 2007 .

[9]  Antonia Zhai,et al.  Efficient dynamic program monitoring on multi-core systems , 2011, J. Syst. Archit..

[10]  Antonia Zhai,et al.  Ex-Mon : An Architectural Framework for Dynamic Program Monitoring on Multicore Processors , 2008 .

[11]  Babak Falsafi,et al.  Flexible Hardware Acceleration for Instruction-Grain Program Monitoring , 2008, 2008 International Symposium on Computer Architecture.

[12]  G. Karlsson,et al.  Lightweight Monitoring of Edge-based Admission Control , 2006, 2006 International Zurich Seminar on Communications.

[13]  Antonia Zhai,et al.  Improving the performance of program monitors with compiler support in multi-core environment , 2010, 2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS).

[14]  Srivaths Ravi,et al.  Hardware-Assisted Run-Time Monitoring for Secure Program Execution on Embedded Processors , 2006, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[15]  Wei Liu,et al.  iWatcher: simple, general architectural support for software debugging , 2004, IEEE Micro.

[16]  Wei Liu,et al.  iWatcher: efficient architectural support for software debugging , 2004, Proceedings. 31st Annual International Symposium on Computer Architecture, 2004..