Abstract
Multi-core processors have penetrated the modern computing platforms in several dimensions. Such systems aim to achieve high-performance via running computations in parallel. However, the performance of such systems is often limited due to the congestion in shared resources, such as shared caches and shared buses. In this paper, we propose MESS, a performance debugging framework for embedded, multi-core systems. MESS systematically discovers the order of memory-access operations that expose performance bugs due to shared caches. We leverage both on single-core performance profiling and symbolic constraint solving to reveal the interleaved memory-access-pattern that leads to a performance bug. Our baseline framework does not generate any false positive. Besides, its failure to find a solution highlights the absence of performance bugs due to shared caches, for a given input. Finally, we propose an approximate solution that dramatically reduces debugging time, at the cost of a reasonable amount of false positives. Our experiments with several embedded software and a real-life robot controller suggest that we can discover performance bugs in a reasonable time. The implementation of MESS and our experiments are available at https://bitbucket.org/sudiptac/mess.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
ARM Cortex-A5 processor. http://www.arm.com/products/processors/cortex-a/cortex-a5.php
Ballybot balancing robots. http://robotics.ee.uwa.edu.au/eyebot/doc/robots/ballybot.html
MESS: memory performance checker for embedded multi-core systems. http://sudiptac.bitbucket.org/papers/mess-extended.pdf
Samsung Exynos processor. http://www.samsung.com/global/business/semiconductor/file/product/Exynos_5_Dual_User_Manaul_Public_REV100-0.pdf
Z3 Constraint solver. http://z3.codeplex.com/
Austin, T., Larson, E., Ernst, D.: Simplescalar: an infrastructure for computer system modeling. Computer 35(2), 59–67 (2002)
Banerjee, A., Chattopadhyay, S., Roychoudhury, A.: Static analysis driven cache performance testing. In: RTSS (2013)
Cerný, P., Chatterjee, K., Henzinger, T.A., Radhakrishna, A., Singh, R.: Quantitative synthesis for concurrent programs. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV 2011. LNCS, vol. 6806, pp. 243–259. Springer, Heidelberg (2011)
Chattopadhyay, S., Chong, L.K., Roychoudhury, A., Kelter, T., Marwedel, P., Falk, H.: A unified WCET analysis framework for multi-core platforms. In: TECS, vol. 13, no. 4s (2014)
Chattopadhyay, S., Eles, P., Peng, Z.: Automated software testing of memory performance in embedded GPUs. In: EMSOFT (2014)
Devietti, J., Lucia, B., Ceze, L., Oskin, M.: DMP: deterministic shared memory multiprocessing. In: ASPLOS (2009)
Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: PLDI (2005)
Gustafsson, J., Betts, A., Ermedahl, A., Lisper, B.: The mälardalen WCET benchmarks: past, present and future. In: WCET (2010)
Holton, B., Bai, K., Shrivastava, A., Ramaprasad, H.: Construction of GCCFG for inter-procedural optimizations in software managed manycore (SMM) architectures. In: CASES (2014)
Huang, J., Zhang, C., Dolby, J.: CLAP: recording local executions to reproduce concurrency failures. In: PLDI (2013)
Li, G., Li, P., Sawaya, G., Gopalakrishnan, G., Ghosh, I., Rajan, S.P.: GKLEE: concolic verification and test generation for GPUs. In: PPoPP (2012). http://www.cs.utah.edu/formal_verification/GKLEE/
Li, Y., Albarghouthi, A., Kincaid, Z., Gurfinkel, A., Chechik, M.: Symbolic optimization with SMT solvers. In: POPL (2014)
Liang, Y., Mitra, T.: Instruction cache locking using temporal reuse profile. In: DAC (2010)
Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: PLDI (2007)
Nagarakatte, S., Burckhardt, S., Martin, M.M.K., Musuvathi, M.: Multicore acceleration of priority-based schedulers for concurrency bug detection. In PLDI (2012)
Sandberg, A., Black-Schaffer, D., Hagersten, E.: Efficient techniques for predicting cache sharing and throughput. In: PACT (2012)
Sandberg, A., Sembrant, A., Hagersten, E., Black-Schaffer, D.: Modeling performance variation due to cache sharing. In: HPCA (2013)
Sen, K.: Race directed random testing of concurrent programs. In: PLDI (2008)
Weeratunge, D., Zhang, X., Jagannathan, S.: Analyzing multicore dumps to facilitate concurrency bug reproduction. In: ASPLOS (2010)
Acknowledgement
We thank the anonymous reviewers for their insightful comments and feedback. This work is partially supported by the Swedish National Graduate School on Computer Science (CUGS). This support is gratefully acknowledged.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Chattopadhyay, S. (2015). MESS: Memory Performance Debugging on Embedded Multi-core Systems. In: Fischer, B., Geldenhuys, J. (eds) Model Checking Software. SPIN 2015. Lecture Notes in Computer Science(), vol 9232. Springer, Cham. https://doi.org/10.1007/978-3-319-23404-5_8
Download citation
DOI: https://doi.org/10.1007/978-3-319-23404-5_8
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-23403-8
Online ISBN: 978-3-319-23404-5
eBook Packages: Computer ScienceComputer Science (R0)