% Predefined journal names: % acmcs: Computing Surveys acta: Acta Infomatica % cacm: Communications of the ACM % ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal % ieeese: IEEE Trans. on Soft. Eng. ieeetc: IEEE Trans. on Computers % ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits % ipl: Information Processing Letters jacm: Journal of the ACM % jcss: J. Computer & System Sciences scp: Science of Comp. Programming % sicomp: SIAM J. on Computing tocs: ACM Trans. on Comp. Systems % tods: ACM Trans. on Database Sys. tog: ACM Trans. on Graphics % toms: ACM Trans. on Math. Software toois: ACM Trans. on Office Info. Sys. % toplas: ACM Trans. on Prog. Lang. & Sys. % tcs: Theoretical Computer Science @string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"} @string{ieeese="IEEE Transactions on Software Engineering"} @string{spe="Software---\-Practice and Experience"} @string{sigplan="SIGPLAN Notices"} @string{joop="Journal of Object-Oriented Programming"} @string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"} @string{osr="Operating Systems Review"} @string{pldi="Programming Language Design and Implementation"} @inproceedings{Hochstein05, keywords = {Application software; Computer aided software engineering; Concurrent computing; Educational institutions; High performance computing; Humans; Instruments; Productivity; Programming profession; Software engineering}, author = {Lorin Hochstein and Jeff Carver and Forrest Shull and Sima Asgari and Victor Basili and Jeffrey K. Hollingsworth and Marvin V. Zelkowitz}, title = {Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers}, organization= {Supercomputing, 2005. Proceedings of the ACM/IEEE SC 2005 Conference}, publisher = {IEEE}, location = {Seattle, Washington, U.S.A.}, month = nov, year = {2005}, pages = {35-35}, } @article{Chicken, keywords = {Chicken}, author = {Doug Zongker}, title = {Chicken Chicken Chicken: Chicken Chicken}, year = 2006 } @misc{TBB, keywords = {Intel, TBB}, key = {TBB}, title = {Thread Building Blocks}, howpublished= {Intel, \url{https://www.threadingbuildingblocks.org}}, optnote = {Accessed: 2018-3}, } @manual{www-cfa, key = {CFA}, keywords = {Cforall}, author = {C$\forall$}, title = {C$\forall$ Programmming Language}, note = {\url{https://plg.uwaterloo.ca/~cforall}}, } @manual{Cpp-Transactions, keywords = {C++, Transactional Memory}, title = {Tech. Spec. for C++ Extensions for Transactional Memory {ISO/IEC} {TS} 19841:2015}, organization= {International Standard Organization}, address = {Geneva, Switzerland}, year = 2015, note = {\url{https://www.iso.org/standard/66343.html}}, } @misc{BankTransfer, key = {Bank Transfer}, keywords = {Bank Transfer}, title = {Bank Account Transfer Problem}, howpublished = {Wiki Wiki Web, \url{http://wiki.c2.com/?BankAccountTransferProblem}}, year = 2010 } @misc{2FTwoHardThings, keywords = {Hard Problem}, title = {TwoHardThings}, author = {Martin Fowler}, howpublished= "\url{https://martinfowler.com/bliki/TwoHardThings.html}", year = 2009 } @article{IntrusiveData, title = {Intrusive Data Structures}, author = {Jiri Soukup}, journal = {CppReport}, year = 1998, month = May, volume = {10/No5.}, page = 22 } @article{Herlihy93, author = {Herlihy, Maurice and Moss, J. Eliot B.}, title = {Transactional memory: architectural support for lock-free data structures}, journal = {SIGARCH Comput. Archit. News}, issue_date = {May 1993}, volume = {21}, number = {2}, month = may, year = {1993}, pages = {289--300}, numpages = {12}, publisher = {ACM}, address = {New York, NY, USA}, } @manual{affinityLinux, key = {TBB}, title = "{Linux man page - sched\_setaffinity(2)}", howpublished= {\url{https://man7.org/linux/man-pages/man2/sched_setaffinity.2.html}}, } @manual{affinityWindows, title = "{Windows documentation - SetThreadAffinityMask function}", note = {\url{https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadaffinitymask}}, } @manual{switchToWindows, title = "{Windows (vs.85) - SwitchToFiber function}" } @manual{affinityFreebsd, title = "{FreeBSD General Commands Manual - CPUSET(1)}" } @manual{affinityNetbsd, title = "{NetBSD Library Functions Manual - AFFINITY(3)}" } @manual{affinityMacosx, title = "{Affinity API Release Notes for OS X v10.5}" } @misc{NodeJs, title = "{Node.js}", howpublished= "\url{https://nodejs.org/en/}", } @misc{SpringMVC, title = "{Spring Web MVC}", howpublished= "\url{https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html}", } @misc{Django, title = "{Django}", howpublished= "\url{https://www.djangoproject.com/}", } @article{Sleator85, author = {Sleator, Daniel Dominic and Tarjan, Robert Endre}, title = {Self-Adjusting Binary Search Trees}, journal = jacm, volume = 32, number = 3, year = 1985, issn = {0004-5411}, pages = {652-686}, address = {New York, NY, USA}, } @article{Berger00, author = {Emery D. Berger and Kathryn S. McKinley and Robert D. Blumofe and Paul R. Wilson}, title = {Hoard: A Scalable Memory Allocator for Multithreaded Applications}, booktitle = {International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-IX)}, journal = sigplan, volume = 35, number = 11, month = nov, year = 2000, pages = {117-128}, note = {International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-IX)}, } @inproceedings{berger02reconsidering, author = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley}, title = {Reconsidering Custom Memory Allocation}, organization= {Proceedings of the 17th ACM SIGPLAN Conference on Object-Oriented Programming: Systems, Languages, and Applications (OOPSLA) 2002}, month = nov, year = 2002, location = {Seattle, Washington, USA}, publisher = {ACM}, address = {New York, NY, USA}, } @article{larson99memory, author = {Per-{\AA}ke Larson and Murali Krishnan}, title = {Memory Allocation for Long-Running Server Applications}, journal = sigplan, volume = 34, number = 3, pages = {176-185}, year = 1999, url = {http://citeseer.ist.psu.edu/article/larson98memory.html} } @techreport{gidpt04, author = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas}, title = {Allocating Memory in a Lock-Free Manner}, number = {2004-04}, institution = {Computing Science}, address = {Chalmers University of Technology}, year = 2004, url = {http://citeseer.ist.psu.edu/gidenstam04allocating.html} } @phdthesis{berger02thesis, author = {Emery Berger}, title = {Memory Management for High-Performance Applications}, school = {The University of Texas at Austin}, year = 2002, month = aug, url = {http://citeseer.ist.psu.edu/article/berger02memory.html} } @misc{sgimisc, author = {SGI}, title = {The Standard Template Library for {C++}}, howpublished= {\textsf{www.sgi.com/tech/stl/Allocators.html}}, } @misc{dlmalloc, author = {Doug Lea}, title = {dlmalloc version 2.8.4}, month = may, year = 2009, howpublished= {\url{ftp://g.oswego.edu/pub/misc/malloc.c}}, } @misc{ptmalloc2, author = {Wolfram Gloger}, title = {ptmalloc version 2}, month = jun, year = 2006, howpublished= {\url{http://www.malloc.de/malloc/ptmalloc2-current.tar.gz}}, } @misc{nedmalloc, author = {Niall Douglas}, title = {nedmalloc version 1.06 Beta}, month = jan, year = 2010, howpublished= {\url{http://prdownloads.sourceforge.net/nedmalloc/nedmalloc\_v1.06beta1\_svn1151.zip}}, } @misc{hoard, author = {Emery D. Berger}, title = {hoard version 3.8}, month = nov, year = 2009, howpublished= {\url{http://www.cs.umass.edu/~emery/hoard/hoard-3.8/source/hoard-38.tar.gz}}, } @comment{mtmalloc, author = {Greg Nakhimovsky}, title = {Improving Scalability of Multithreaded Dynamic Memory Allocation}, journal = {Dr. Dobb's}, month = jul, year = 2001, url = {http://www.ddj.com/mobile/184404685?pgno=1} } @misc{mtmalloc, key = {mtmalloc}, title = {mtmalloc.c}, year = 2009, howpublished= {\url{http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libmtmalloc/common/mtmalloc.c}}, } @misc{tcmalloc, author = {Sanjay Ghemawat and Paul Menage}, title = {tcmalloc version 1.5}, month = jan, year = 2010, howpublished= {\url{http://google-perftools.googlecode.com/files/google-perftools-1.5.tar.gz}}, } @inproceedings{streamflow, author = {Scott Schneider and Christos D. Antonopoulos and Dimitrios S. Nikolopoulos}, title = {Scalable Locality-Conscious Multithreaded Memory Allocation}, organization= {International Symposium on Memory Management (ISSM'06)}, month = jun, year = 2006, pages = {84-94}, location = {Ottawa, Ontario, Canada}, publisher = {ACM}, address = {New York, NY, USA}, } @misc{streamflowweb, author = {Scott Schneider and Christos Antonopoulos and Dimitrios Nikolopoulos}, title = {Streamflow}, howpublished= {\url{http://people.cs.vt.edu/~scschnei/streamflow}}, } @inproceedings{Blumofe94, author = {R. Blumofe and C. Leiserson}, title = {Scheduling Multithreaded Computations by Work Stealing}, organization= {Proceedings of the 35th Annual Symposium on Foundations of Computer Science, Santa Fe, New Mexico.}, pages = {356-368}, year = 1994, month = nov, url = {http://citeseer.ist.psu.edu/article/blumofe94scheduling.html} } @article{Johnstone99, author = {Mark S. Johnstone and Paul R. Wilson}, title = {The Memory Fragmentation Problem: Solved?}, journal = sigplan, volume = 34, number = 3, pages = {26-36}, year = 1999, } @inproceedings{Grunwald93, author = {Dirk Grunwald and Benjamin G. Zorn and Robert Henderson}, title = {Improving the Cache Locality of Memory Allocation}, organization= {{SIGPLAN} Conference on Programming Language Design and Implementation}, pages = {177-186}, year = 1993, url = {http://citeseer.ist.psu.edu/grunwald93improving.html} } @inproceedings{Wilson95, author = {Wilson, Paul R. and Johnstone, Mark S. and Neely, Michael and Boles, David}, title = {Dynamic Storage Allocation: A Survey and Critical Review}, organization= {Proc. Int. Workshop on Memory Management}, address = {Kinross Scotland, UK}, year = 1995, url = {http://citeseer.ist.psu.edu/wilson95dynamic.html} } @inproceedings{Siebert00, author = {Fridtjof Siebert}, title = {Eliminating External Fragmentation in a Non-moving Garbage Collector for Java}, organization= {CASES '00: Proceedings of the 2000 international conference on Compilers, architecture, and synthesis for embedded systems}, year = 2000, isbn = {1-58113-338-3}, pages = {9-17}, location = {San Jose, California, United States}, publisher = {ACM Press}, address = {New York, NY, USA} } @inproceedings{Lim98, author = {Tian F. Lim and Przemyslaw Pardyak and Brian N. Bershad}, title = {A Memory-Efficient Real-Time Non-copying Garbage Collector}, organization= {ISMM '98: Proceedings of the 1st international symposium on Memory management}, year = 1998, pages = {118-129}, location = {Vancouver, British Columbia, Canada}, publisher = {ACM Press}, address = {New York, NY, USA} } @article{Chang01, author = {J. Morris Chang and Woo Hyong Lee and Witawas Srisa-an}, title = {A Study of the Allocation Behavior of {C++} Programs}, journal = {J. Syst. Softw.}, volume = 57, number = 2, year = 2001, issn = {0164-1212}, pages = {107-118}, publisher = {Elsevier Science Inc.}, address = {New York, NY, USA} } @article{Herlihy93b, author = {Maurice Herlihy}, title = {A Methodology for Implementing Highly Concurrent Data Objects}, journal = toplas, volume = 15, number = 5, year = 1993, issn = {0164-0925}, pages = {745-770}, publisher = {ACM Press}, address = {New York, NY, USA} } @article{Denning05, author = {Peter J. Denning}, title = {The Locality Principle}, journal = cacm, volume = 48, number = 7, year = 2005, issn = {0001-0782}, pages = {19-24}, publisher = {ACM Press}, address = {New York, NY, USA} } @misc{wilson-locality, author = {Paul R. Wilson}, title = {Locality of Reference, Patterns in Program Behavior, Memory Management, and Memory Hierarchies}, url = {http://citeseer.ist.psu.edu/337869.html} } @inproceedings{Feng05, author = {Yi Feng and Emery D. Berger}, title = {A Locality-Improving Dynamic Memory Allocator}, organization= {Proceedings of the 2005 Workshop on Memory System Performance}, location = {Chicago, Illinois}, publisher = {ACM}, address = {New York, NY, USA}, month = jun, year = 2005, pages = {68-77}, } @inproceedings{grunwald-locality, author = {Dirk Grunwald and Benjamin Zorn and Robert Henderson}, title = {Improving the Cache Locality of Memory Allocation}, organization= {PLDI '93: Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation}, year = 1993, isbn = {0-89791-598-4}, pages = {177-186}, location = {Albuquerque, New Mexico, United States}, publisher = {ACM Press}, address = {New York, NY, USA} } @article{Alexandrescu01b, author = {Andrei Alexandrescu}, title = {{volatile} -- Multithreaded Programmer's Best Friend}, journal = {Dr. Dobb's}, month = feb, year = 2001, url = {http://www.ddj.com/cpp/184403766} } @article{Attardi03, author = {Joseph Attardi and Neelakanth Nadgir}, title = {A Comparison of Memory Allocators in Multiprocessors}, journal = {Sun Developer Network}, month = jun, year = 2003, note = {\url{http://developers.sun.com/solaris/articles/multiproc/multiproc.html}}, } @unpublished{memlayout, author = {Peter Jay Salzman}, title = {Memory Layout and the Stack}, journal = {Using GNU's GDB Debugger}, note = {\url{http://dirac.org/linux/gdb/02a-Memory\_Layout\_And\_The\_Stack.php}}, } @unpublished{Ferguson07, author = {Justin N. Ferguson}, title = {Understanding the Heap by Breaking It}, note = {\url{https://www.blackhat.com/presentations/bh-usa-07/Ferguson/Whitepaper/bh-usa-07-ferguson-WP.pdf}}, } @inproceedings{Huang06, author = {Xianglong Huang and Brian T Lewis and Kathryn S McKinley}, title = {Dynamic Code Management: Improving Whole Program Code Locality in Managed Runtimes}, organization= {VEE '06: Proceedings of the 2nd international conference on Virtual execution environments}, year = 2006, isbn = {1-59593-332-6}, pages = {133-143}, location = {Ottawa, Ontario, Canada}, publisher = {ACM Press}, address = {New York, NY, USA} } @inproceedings{Herlihy03, author = {M. Herlihy and V. Luchangco and M. Moir}, title = {Obstruction-free Synchronization: Double-ended Queues as an Example}, organization= {Proceedings of the 23rd IEEE International Conference on Distributed Computing Systems}, year = 2003, month = may, url = {http://www.cs.brown.edu/~mph/publications.html} } @techreport{Detlefs93, author = {David L. Detlefs and Al Dosser and Benjamin Zorn}, title = {Memory Allocation Costs in Large {C} and {C++} Programs}, number = {CU-CS-665-93}, institution = {University of Colorado}, address = {130 Lytton Avenue, Palo Alto, CA 94301 and Campus Box 430, Boulder, CO 80309}, year = 1993, url = {http://citeseer.ist.psu.edu/detlefs93memory.html} } @inproceedings{Oyama99, author = {Y. Oyama and K. Taura and A. Yonezawa}, title = {Executing Parallel Programs With Synchronization Bottlenecks Efficiently}, organization= {Proceedings of International Workshop on Parallel and Distributed Computing for Symbolic and Irregular Applications (PDSIA '99)}, year = {1999}, pages = {182--204}, publisher = {World Scientific}, address = {Sendai, Japan}, } @inproceedings{Dice02, author = {Dave Dice and Alex Garthwaite}, title = {Mostly Lock-Free Malloc}, organization= {Proceedings of the 3rd international symposium on Memory management (ISMM'02)}, month = jun, year = 2002, pages = {163-174}, location = {Berlin, Germany}, publisher = {ACM}, address = {New York, NY, USA}, } @article{Sleator85, author = {Sleator, Daniel Dominic and Tarjan, Robert Endre}, title = {Self-Adjusting Binary Search Trees}, journal = jacm, volume = 32, number = 3, year = 1985, issn = {0004-5411}, pages = {652-686}, doi = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/3828.3835}, address = {New York, NY, USA}, } @techreport{gidpt04, author = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas}, title = {Allocating Memory in a Lock-Free Manner}, number = {2004-04}, institution = {Computing Science}, address = {Chalmers University of Technology}, year = 2004, url = {http://citeseer.ist.psu.edu/gidenstam04allocating.html} } @phdthesis{berger02thesis, author = {Emery Berger}, title = {Memory Management for High-Performance Applications}, school = {The University of Texas at Austin}, year = 2002, month = aug, url = {http://citeseer.ist.psu.edu/article/berger02memory.html} } @misc{sgimisc, author = {SGI}, title = {The Standard Template Library for {C++}}, howpublished= {\url{www.sgi.com/tech/stl/Allocators.html}}, } @misc{ptmalloc3, author = {Wolfram Gloger}, title = {ptmalloc version 3}, month = may, year = 2006, howpublished= {\url{http://www.malloc.de/malloc/ptmalloc3-current.tar.gz}}, } @misc{tbbmalloc, key = {tbbmalloc}, author = {multiple contributors}, title = {Threading Building Blocks}, month = mar, year = 2020, howpublished= {\url{https://github.com/oneapi-src/oneTBB/releases/tag/v2020.2}}, } @misc{GNUallocAPI, author = {GNU}, title = {Summary of malloc-Related Functions}, year = 2020, howpublished= {\url{https://www.gnu.org/software/libc/manual/html\_node/Summary-of-Malloc.html}}, } @misc{SeriallyReusable, author = {IBM}, title = {Serially reusable programs}, month = mar, year = 2021, howpublished= {\url{https://www.ibm.com/docs/en/ztpf/1.1.0.15?topic=structures-serially-reusable-programs}}, } @misc{librseq, author = {Mathieu Desnoyers}, title = {Library for Restartable Sequences}, month = mar, year = 2022, howpublished= {\url{https://github.com/compudj/librseq}}, } @misc{glibc, key = {glibc}, author = {multiple contributors}, title = {glibc version 2.31}, month = feb, year = 2020, howpublished= {\url{https://www.gnu.org/software/libc}}, } @misc{jemalloc, key = {jemalloc}, author = {multiple contributors}, title = {jemalloc version 5.2.1}, month = apr, year = 2022, howpublished= {\url{https://github.com/jemalloc/jemalloc}{https://github.com/jemalloc/jemalloc}}, } @misc{uniformPRNG, author = {\CC Standard Library}, title = {\lstinline{uniform_int_distribution}}, month = apr, year = 2022, howpublished= {\url{https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution}}, } @misc{fisherPRNG, author = {\CC Standard Library}, title = {\lstinline{fister_f_distribution}}, month = apr, year = 2022, howpublished= {\url{https://www.cplusplus.com/reference/random/fisher_f_distribution}}, } @misc{streamflowweb, author = {Scott Schneider and Christos Antonopoulos and Dimitrios Nikolopoulos}, title = {Streamflow}, howpublished= {\url{http://people.cs.vt.edu/~scschnei/streamflow}}, } @inproceedings{Blumofe94, author = {R. Blumofe and C. Leiserson}, title = {Scheduling Multithreaded Computations by Work Stealing}, booktitle = {Proceedings of the 35th Annual Symposium on Foundations of Computer Science, Santa Fe, New Mexico.}, pages = {356-368}, year = 1994, month = nov, url = {http://citeseer.ist.psu.edu/article/blumofe94scheduling.html} } @article{Chang01, author = {J. Morris Chang and Woo Hyong Lee and Witawas Srisa-an}, title = {A Study of the Allocation Behavior of {C++} Programs}, journal = {J. Syst. Softw.}, volume = 57, number = 2, year = 2001, issn = {0164-1212}, pages = {107-118}, doi = {http://dx.doi.org/10.1016/S0164-1212(00)00122-9}, publisher = {Elsevier Science Inc.}, address = {New York, NY, USA} } @misc{wilson-locality, author = {Paul R. Wilson}, title = {Locality of Reference, Patterns in Program Behavior, Memory Management, and Memory Hierarchies}, url = {http://citeseer.ist.psu.edu/337869.html} } @inproceedings{grunwald-locality, author = {Dirk Grunwald and Benjamin Zorn and Robert Henderson}, title = {Improving the Cache Locality of Memory Allocation}, booktitle = {PLDI '93: Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation}, year = 1993, isbn = {0-89791-598-4}, pages = {177-186}, location = {Albuquerque, New Mexico, United States}, doi = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/155090.155107}, publisher = {ACM Press}, address = {New York, NY, USA} } @article{Alexandrescu01b, author = {Andrei Alexandrescu}, title = {{volatile} -- Multithreaded Programmer's Best Friend}, journal = {Dr. Dobb's}, month = feb, year = 2001, url = {http://www.ddj.com/cpp/184403766} } @article{Attardi03, author = {Joseph Attardi and Neelakanth Nadgir}, title = {A Comparison of Memory Allocators in Multiprocessors}, journal = {Sun Developer Network}, month = jun, year = 2003, note = {\url{http://developers.sun.com/solaris/articles/multiproc/multiproc.html}}, } @unpublished{Ferguson07, author = {Justin N. Ferguson}, title = {Understanding the Heap by Breaking It}, note = {\url{https://www.blackhat.com/presentations/bh-usa-07/Ferguson/Whitepaper/bh-usa-07-ferguson-WP.pdf}}, } @inproceedings{Herlihy03, author = {M. Herlihy and V. Luchangco and M. Moir}, title = {Obstruction-free Synchronization: Double-ended Queues as an Example}, booktitle = {Proceedings of the 23rd IEEE International Conference on Distributed Computing Systems}, year = 2003, month = may, url = {http://www.cs.brown.edu/~mph/publications.html} }