{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,12]],"date-time":"2025-11-12T14:16:29Z","timestamp":1762956989990,"version":"3.41.0"},"reference-count":67,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2022,11,17]],"date-time":"2022-11-17T00:00:00Z","timestamp":1668643200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"crossref","id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2023,3,31]]},"abstract":"<jats:p>Centralized power management control systems are hitting a scalability limit. In particular, enforcing a power cap in a many-core system in a performance-friendly manner is quite challenging. Today\u2019s on-chip controller reduces the clock speed of compute domains in response to local or global power limit alerts. However, this is opaque to the operating system (OS), which continues to request higher clock frequency based on the workload characteristics acting against the centralized on-chip controller. To address these issues, we introduce TokenSmart, which implements a set of scalable distributed frequency control heuristics within the OS, using a novel token-based mechanism. The number of system-allocated power tokens represents the maximum allowable power consumption; and the OS governor orchestrates a token-passing (or sharing) algorithm between the compute engines. Token allocation count increase (decrease) corresponds to a increase (decrease) of clock frequency. The compute units are connected in a ring-topology allowing minimal meta-data to be passed along with the token value for regulating power budget. We explore different heuristics to assign tokens smartly across the units. This results in efficient power regulation and sustenance of turbo frequencies over a longer duration. Our proposed methodology can be implemented in hardware with multiple on-chip controllers, or in software where each set of cores acts as a compute unit. The methodology is currently implemented within the Linux kernel of a real IBM POWER9 many-core system and experimentally verified on different real world workloads such as Redis, Cassandra, PostgreSQL along with a micro-benchmark such as rt-app. Our experiments indicate the increase in throughput for all the workloads along with the benefit of power savings. For instance, results show a considerable boost of about 4% in throughput of both the PostgreSQL and Redis benchmark with a substantial savings in power consumption (18% and 37%, respectively). If the approach is implemented in hardware, then our experimental analysis speculates the throughput to increase up to 14% in PostgreSQL benchmark.<\/jats:p>","DOI":"10.1145\/3559762","type":"journal-article","created":{"date-parts":[[2022,8,27]],"date-time":"2022-08-27T10:25:01Z","timestamp":1661595901000},"page":"1-26","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["TokenSmart: Distributed, Scalable Power Management in the Many-core Era"],"prefix":"10.1145","volume":"20","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-4268-4490","authenticated-orcid":false,"given":"Parth","family":"Shah","sequence":"first","affiliation":[{"name":"IBM, Banaglore, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1173-2349","authenticated-orcid":false,"given":"Ranjal Gautham","family":"Shenoy","sequence":"additional","affiliation":[{"name":"IBM, Banaglore, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6860-2823","authenticated-orcid":false,"given":"Vaidyanathan","family":"Srinivasan","sequence":"additional","affiliation":[{"name":"IBM, Banaglore, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-1380-5671","authenticated-orcid":false,"given":"Pradip","family":"Bose","sequence":"additional","affiliation":[{"name":"IBM Research, Yorktown Heights, NY, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5341-8916","authenticated-orcid":false,"given":"Alper","family":"Buyuktosunoglu","sequence":"additional","affiliation":[{"name":"IBM Research, Yorktown Heights, NY, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2022,11,17]]},"reference":[{"key":"e_1_3_2_2_2","article-title":"rt-app framework","author":"Bagnoli Giacomo","year":"2009","unstructured":"Giacomo Bagnoli. 2009. rt-app framework. Retrieved from https:\/\/github.com\/scheduler-tools\/rt-app.","journal-title":"Retrieved from https:\/\/github.com\/scheduler-tools\/rt-app"},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1166\/jolpe.2014.1359"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1109\/ASPDAC.2008.4484043"},{"key":"e_1_3_2_5_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISSCC19947.2020.9063030"},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2018.2800218"},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1109\/JSSC.2018.2873582"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/1555754.1555792"},{"key":"e_1_3_2_9_2","doi-asserted-by":"publisher","DOI":"10.1109\/CICC.2014.6946043"},{"key":"e_1_3_2_10_2","article-title":"EPYC: A Study in Energy Efficient CPU Design","author":"Brookwood N.","year":"2018","unstructured":"N. Brookwood. 2018. EPYC: A Study in Energy Efficient CPU Design. Retrieved from https:\/\/www.amd.com\/system\/files\/documents\/The-Energy-Efficient-AMD-EPYC-Design.pdf.","journal-title":"Retrieved from https:\/\/www.amd.com\/system\/files\/documents\/The-Energy-Efficient-AMD-EPYC-Design.pdf"},{"key":"e_1_3_2_11_2","article-title":"IBM Energy-Scale for POWER9 Processor-Based Systems","author":"Broyles M. A.","year":"2021","unstructured":"M. A. Broyles, C. Cain, C. Francois, T. J. Rosedahl, and B. Veale. 2021. IBM Energy-Scale for POWER9 Processor-Based Systems. Retrieved from https:\/\/www.ibm.com\/downloads\/cas\/6GZMODN3.","journal-title":"Retrieved from https:\/\/www.ibm.com\/downloads\/cas\/6GZMODN3"},{"key":"e_1_3_2_12_2","article-title":"Apache Cassandra","author":"Apache Cassandra,","year":"2014","unstructured":"Cassandra, Apache. 2014. Apache Cassandra. Retrieved from http:\/\/planetcassandra. org\/what-is-apache-cassandra.","journal-title":"Retrieved from http:\/\/planetcassandra. org\/what-is-apache-cassandra"},{"key":"e_1_3_2_13_2","article-title":"Cassandra Stress","author":"Apache Cassandra,","year":"2016","unstructured":"Cassandra, Apache. 2016. Cassandra Stress. Retrieved from http:\/\/cassandra.apache.org\/doc\/latest\/tools\/cassandra_stress.html.","journal-title":"Retrieved from http:\/\/cassandra.apache.org\/doc\/latest\/tools\/cassandra_stress.html"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2011.49"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISSCC.2017.7870449"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/2155620.2155641"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2009.2026357"},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/1840845.1840883"},{"key":"e_1_3_2_19_2","article-title":"CPU Load","author":"Documentation The Linux Kernel","year":"2015","unstructured":"The Linux Kernel Documentation. 2015. CPU Load. Retrieved from https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/cpu-load.html.","journal-title":"Retrieved from https:\/\/www.kernel.org\/doc\/html\/latest\/admin-guide\/cpu-load.html"},{"key":"e_1_3_2_20_2","article-title":"Energy Aware Scheduling","author":"Documentation The Linux Kernel","year":"2018","unstructured":"The Linux Kernel Documentation. 2018. Energy Aware Scheduling. Retrieved from https:\/\/www.kernel.org\/doc\/html\/latest\/scheduler\/sched-energy.html.","journal-title":"Retrieved from https:\/\/www.kernel.org\/doc\/html\/latest\/scheduler\/sched-energy.html"},{"key":"e_1_3_2_21_2","article-title":"CPU frequency and voltage scaling code in the Linux(TM) kernel","author":"Wysocki Viresh Kumar Dominik Brodowski, Rafael J.","year":"2010","unstructured":"Viresh Kumar Dominik Brodowski, Rafael J. Wysocki. 2010. CPU frequency and voltage scaling code in the Linux(TM) kernel. Retrieved from https:\/\/www.kernel.org\/doc\/Documentation\/cpu-freq\/governors.txt.","journal-title":"Retrieved from https:\/\/www.kernel.org\/doc\/Documentation\/cpu-freq\/governors.txt"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/2968456.2968459"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2017.38"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/JSSC.2005.859879"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2011.29"},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2011.2114250"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2018.2846158"},{"key":"e_1_3_2_28_2","article-title":"On Chip Controller","author":"Foundation OpenPower","year":"2015","unstructured":"OpenPower Foundation. 2015. On Chip Controller. Retrieved from https:\/\/openpowerfoundation.org\/on-chip-controller-occ\/.","journal-title":"Retrieved from https:\/\/openpowerfoundation.org\/on-chip-controller-occ\/"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICPP.2007.29"},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1145\/1283780.1283790"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2006.8"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1145\/1854273.1854281"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/1077603.1077637"},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2013.2257923"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1145\/2830772.2830797"},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2008.4658633"},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/2000064.2000117"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1147\/rd.516.0775"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/1454115.1454141"},{"key":"e_1_3_2_40_2","doi-asserted-by":"publisher","DOI":"10.1109\/SC.2010.15"},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1109\/CODESISSS.2015.7331380"},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.1145\/2541940.2541974"},{"key":"e_1_3_2_43_2","article-title":"NVIDIA GPU power management","year":"2005","unstructured":"NVIDIA. 2005. NVIDIA GPU power management. Retrieved from https:\/\/download.nvidia.com\/XFree86\/Linux-x86_64\/435.17\/README\/dynamicpowermanagement.html.","journal-title":"Retrieved from https:\/\/download.nvidia.com\/XFree86\/Linux-x86_64\/435.17\/README\/dynamicpowermanagement.html"},{"key":"e_1_3_2_44_2","article-title":"VMWare distributed power management concepts and use","author":"Paper VMWare White","year":"2010","unstructured":"VMWare White Paper. 2010. VMWare distributed power management concepts and use. Retrieved from https:\/\/www. vmware.com\/content\/dam\/digitalmarketing\/vmware\/en\/pdf\/techpaper\/Distributed-Power-Management-vSphere. pdf.","journal-title":"Retrieved from https:\/\/www. vmware.com\/content\/dam\/digitalmarketing\/vmware\/en\/pdf\/techpaper\/Distributed-Power-Management-vSphere. pdf"},{"key":"e_1_3_2_45_2","article-title":"pgbench","year":"2021","unstructured":"PostgreSQL. 2021. pgbench. Retrieved from https:\/\/www.postgresql.org\/docs\/10\/pgbench.html.","journal-title":"Retrieved from https:\/\/www.postgresql.org\/docs\/10\/pgbench.html"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/1555754.1555793"},{"key":"e_1_3_2_47_2","article-title":"LRANGE key start stop","author":"Labs Redis","year":"2021","unstructured":"Redis Labs. 2021. LRANGE key start stop. Retrieved from https:\/\/redis.io\/commands\/LRANGE.","journal-title":"Retrieved from https:\/\/redis.io\/commands\/LRANGE"},{"key":"e_1_3_2_48_2","article-title":"PING","author":"Labs Redis","year":"2021","unstructured":"Redis Labs. 2021. PING. Retrieved from https:\/\/redis.io\/commands\/PING.","journal-title":"Retrieved from https:\/\/redis.io\/commands\/PING"},{"key":"e_1_3_2_49_2","article-title":"Redis","author":"Labs Redis","year":"2021","unstructured":"Redis Labs. 2021. Redis. Retrieved from https:\/\/redis.io\/.","journal-title":"Retrieved from https:\/\/redis.io\/"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2012.12"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2017.40"},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1109\/DATE.2009.5090910"},{"key":"e_1_3_2_53_2","article-title":"Source code of Linux kernel with the TokenSmart frequency scaling governor","author":"Shah Parth","year":"2022","unstructured":"Parth Shah. 2022. Source code of Linux kernel with the TokenSmart frequency scaling governor. Retrieved from https:\/\/github.com\/decentralized-cpu-powermgt\/linux-tokensmart.","journal-title":"Retrieved from https:\/\/github.com\/decentralized-cpu-powermgt\/linux-tokensmart"},{"key":"e_1_3_2_54_2","doi-asserted-by":"publisher","DOI":"10.1145\/1283780.1283791"},{"key":"e_1_3_2_55_2","doi-asserted-by":"publisher","DOI":"10.1145\/1577129.1577137"},{"key":"e_1_3_2_56_2","doi-asserted-by":"publisher","DOI":"10.1109\/HOTCHIPS.2008.7476555"},{"key":"e_1_3_2_57_2","doi-asserted-by":"publisher","DOI":"10.1109\/IGCC.2011.6008552"},{"key":"e_1_3_2_58_2","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2014.17"},{"key":"e_1_3_2_59_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2008.40"},{"key":"e_1_3_2_60_2","doi-asserted-by":"publisher","DOI":"10.1145\/2540708.2540727"},{"key":"e_1_3_2_61_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISSCC.2018.8310303"},{"key":"e_1_3_2_62_2","doi-asserted-by":"publisher","DOI":"10.1145\/1555754.1555794"},{"key":"e_1_3_2_63_2","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2015.2446872"},{"key":"e_1_3_2_64_2","doi-asserted-by":"publisher","DOI":"10.1147\/JRD.2020.3008143"},{"key":"e_1_3_2_65_2","doi-asserted-by":"publisher","DOI":"10.1145\/1854273.1854283"},{"key":"e_1_3_2_66_2","doi-asserted-by":"publisher","DOI":"10.1109\/JSSC.2020.3030062"},{"key":"e_1_3_2_67_2","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872375"},{"key":"e_1_3_2_68_2","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2008.925793"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3559762","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3559762","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T18:07:57Z","timestamp":1750183677000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3559762"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,11,17]]},"references-count":67,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2023,3,31]]}},"alternative-id":["10.1145\/3559762"],"URL":"https:\/\/doi.org\/10.1145\/3559762","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2022,11,17]]},"assertion":[{"value":"2022-01-19","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-08-09","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-11-17","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}