№ 40 (299), выпуск 14Страницы 141 - 155

«Эфффективность» нитей в многопроцессорных системах с общей памятью

М.О. Бахтерев
Традиционно предполагается, что вычисление, разбитое на несколько нитей определённым образом, выполняется в системах с общей памятью (SMP или NUMA) быстрее, чем это же вычисление, но разбитое на несколько процессов. В представляемой работе высказана гипотеза о том, что такое предположение может быть неверным для вычислений с большими объёмами данных, главным образом по двум причинам. Во-первых, поддержка единого адресного пространства для нитей может быть существенно более накладной, чем суммарные затраты на переключение контекста выполнения между процессами. Во-вторых, даже если вычисление не требует интенсивного управления памятью, естественное ограничение на объём хранимого в TLB описания рабочего множества страниц, и в случае нитей приводит к необходимости частого обновления этого кэша трансляций. В статье описаны эксперименты и их результаты, которые подтверждают адекватность этой гипотезы.
Полный текст
Ключевые слова
общая память, производительность, нити, процессы.
Литература
1. AMD64 Architecture Programmer's Manual Volume 2: System Programming - Advanced Micro Devices, 2011.
2. Appleton, R. Understanding a Context Switching Benchmark // Linux J. - 1999. - № 57. - P. 1-6.
3. Sigoure, B. How long does it take to make context switch? - 2010. - URL: http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html (дата обращения: 16.10 2012).
4. SunOS Multi-thread Architecture / M.L. Powell, S.R. Kleiman, S. Barton, D. Shah, D. Stein, M. Weeks // Proceedings of the Winter USENIX Conference. - Dallas, TX, 1991. - P. 65-80.
5. The SPARC Architecture Manual. Version 8. - Menlo Park, CA: SPARC International Inc, 1991.
6. Performance of Address-Space Multiplexing on the Pentium / V. Uhlig, U. Dannowski, E. Skoguld, A. Haeberlen, G. Heiser. - 2002.
7. Jacob, B. Virtual Memory in Contemporary Microprocessors / B. Jacob, T. Mudge // IEEE Micro. - 1998. - V. 18, № 4. - P. 60-75.
8. Таненбаум, Э. Современные Операционные системы. - 3-е изд. / Э. Таненбаум. - СПб: Питер, 2010.
9. An Overview of the Singularity Project / G. Hunt, J. R. Larus, M. Abadi, M. Aiken, P. Barham, M. Fahndrich, C. Hawblitzel, O. Hodson, S. Levi, N. Murphy, B. Steensgaard, D. Tarditi, T. Wobber, and Brian D. Zill. - Microsoft Research, 2005.
10. Исходные тексты Linux 3.3.4. Функция switch_mm. - URL: http://lxr.linux.no/#linux+v3.3.4/arch/x86/include/asm/mmu_context.h#L33 (дата обращения: 16.10.2012).
11. Бахтерев, М.О. Набор тестов Thread proc benchmark. - URL: https://github.com/coda/thread-proc (дата обращения: 16.10.2012).
12. Snyder, P. tmpfs: A Virtual Memory File System // Proceedings of the European USENIX Conference. - France, Nice, 1990. - P. 241-248.
13. A 40nm 16-Core 128-Thread CMT SPARC SoC Processor / J. Shin, K. Tam, D. Huang, B. Petrick, H. Pham, C. Hwang, H. Li, A. Smith, T. Johnson, F. Schumacher, D. Greenhill, A. Leon, A. Strong // ISSCC Digest. - 2010. - № 56. - P. 98-99.
14. Your computer is already a distributed system. Why isn't your OS? / A. Baumann, S. Peter, A. Sch'upbach, A. Singhania, T. Roscoe, P. Barham, R. Isaacs // Proceedings of the 12th HotOS Workshop. - Monte Verit`a, 2009. - P. 19.
15. Методика распределенных вычислений RiDE / М.О. Бахтерев, П.А. Васёв, А.Ю. Казанцев, И.А. Альбрехт, // Параллельные вычислительные технологии (ПаВТ'2011): тр. междунар. науч. конф. - М., 2011. - С. 418-426.