{"title":"用于模拟多程序工作负载的完整或快速参考跟踪收集:选择一个","authors":"Scott F. Kaplan","doi":"10.1145/1005686.1005747","DOIUrl":null,"url":null,"abstract":"Trace-driven simulation [8] provides a reproducible, controllable, and verifiable mechanism for evaluating memory management policies used at every level of the memory hierarchy. A reference trace collector gathers the inputs that drive such simulations. Each collector must interfere with normal execution so that it can capture the references—that is, gain control of execution when a reference occurs. Once a reference has been captured, it is then handled—that is, stored, filtered, or otherwise processed. Most existing trace collectors operate only on a single process [5, 6, 7]. The few collectors that operate on multiple processes [1] are not capable of gathering all of the information needed to drive multiprogrammed simulations. Specifically, they do not record critical kernel events required to associate each reference with its thread, associate each thread with its process, account for file system accesses, and identify all uses of shared memory. Most collectors have low capturing overhead. However, it is the handling overhead that dominates the total overhead of any collector that captures every reference [3], slowing executing by factors of at least 400. Thus, to reduce the total overhead, a collector must not capture all references. Significant event tracing [5] is the only existing method of selective capturing. It is a binary rewriting strategy that can identify code segments within which references may be inferred by a post-processor. This method, however, can be applied only to binaries whose symbol table information has not been stripped. It also cannot be applied to dynamically generated code, and it is not applicable to multiprogrammed workloads.","PeriodicalId":172626,"journal":{"name":"SIGMETRICS '04/Performance '04","volume":"44 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2004-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":"{\"title\":\"Complete or fast reference trace collection for simulating multiprogrammed workloads: choose one\",\"authors\":\"Scott F. Kaplan\",\"doi\":\"10.1145/1005686.1005747\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Trace-driven simulation [8] provides a reproducible, controllable, and verifiable mechanism for evaluating memory management policies used at every level of the memory hierarchy. A reference trace collector gathers the inputs that drive such simulations. Each collector must interfere with normal execution so that it can capture the references—that is, gain control of execution when a reference occurs. Once a reference has been captured, it is then handled—that is, stored, filtered, or otherwise processed. Most existing trace collectors operate only on a single process [5, 6, 7]. The few collectors that operate on multiple processes [1] are not capable of gathering all of the information needed to drive multiprogrammed simulations. Specifically, they do not record critical kernel events required to associate each reference with its thread, associate each thread with its process, account for file system accesses, and identify all uses of shared memory. Most collectors have low capturing overhead. However, it is the handling overhead that dominates the total overhead of any collector that captures every reference [3], slowing executing by factors of at least 400. Thus, to reduce the total overhead, a collector must not capture all references. Significant event tracing [5] is the only existing method of selective capturing. It is a binary rewriting strategy that can identify code segments within which references may be inferred by a post-processor. This method, however, can be applied only to binaries whose symbol table information has not been stripped. It also cannot be applied to dynamically generated code, and it is not applicable to multiprogrammed workloads.\",\"PeriodicalId\":172626,\"journal\":{\"name\":\"SIGMETRICS '04/Performance '04\",\"volume\":\"44 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2004-06-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"1\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"SIGMETRICS '04/Performance '04\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/1005686.1005747\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"SIGMETRICS '04/Performance '04","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1005686.1005747","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Complete or fast reference trace collection for simulating multiprogrammed workloads: choose one
Trace-driven simulation [8] provides a reproducible, controllable, and verifiable mechanism for evaluating memory management policies used at every level of the memory hierarchy. A reference trace collector gathers the inputs that drive such simulations. Each collector must interfere with normal execution so that it can capture the references—that is, gain control of execution when a reference occurs. Once a reference has been captured, it is then handled—that is, stored, filtered, or otherwise processed. Most existing trace collectors operate only on a single process [5, 6, 7]. The few collectors that operate on multiple processes [1] are not capable of gathering all of the information needed to drive multiprogrammed simulations. Specifically, they do not record critical kernel events required to associate each reference with its thread, associate each thread with its process, account for file system accesses, and identify all uses of shared memory. Most collectors have low capturing overhead. However, it is the handling overhead that dominates the total overhead of any collector that captures every reference [3], slowing executing by factors of at least 400. Thus, to reduce the total overhead, a collector must not capture all references. Significant event tracing [5] is the only existing method of selective capturing. It is a binary rewriting strategy that can identify code segments within which references may be inferred by a post-processor. This method, however, can be applied only to binaries whose symbol table information has not been stripped. It also cannot be applied to dynamically generated code, and it is not applicable to multiprogrammed workloads.