@inproceedings{10.5555/2735522.2735546,
  title = {The Power of System Call Traces: {{Predicting}} the Software Energy Consumption Impact of Changes},
  booktitle = {Proceedings of 24th Annual International Conference on Computer Science and Software Engineering},
  author = {Aggarwal, Karan and Zhang, Chenlei and Campbell, Joshua Charles and Hindle, Abram and Stroulia, Eleni},
  year = {2014},
  series = {{{CASCON}} '14},
  pages = {219--233},
  publisher = {{IBM Corp.}},
  address = {{USA}},
  abstract = {Battery is a critical resource for smartphones. Software developers as the builders and maintainers of applications, are responsible for updating and deploying energy efficient applications to end users. Unfortunately, the impact of software change on energy consumption is still unclear. Estimation based on software metrics has proved difficult. As energy consumption profiling requires special infrastructure, developers have difficulty assessing the impact of their actions on energy consumption. System calls are the interface between applications and the OS kernel and provide insight into how software utilizes hardware and software resources. As profiling system calls requires no specialized infrastructure, unlike energy consumption, it is much easier for the developers to track changes to system calls. Thus we relate software change to energy consumption by tracing the changes in an application's pattern of system call invocations. We find that significant changes to system call profiles often induce significant changes in energy consumption.}
}

@misc{1646300HavingYouTube,
  title = {1646300 - {{Having YouTube}} Tab Open with No Video Playing Shows High Energy Usage},
  url = {https://bugzilla.mozilla.org/show_bug.cgi?id=1646300},
  urldate = {2023-04-06},
  abstract = {UNCONFIRMED (nobody) in Core - Graphics: Layers. Last updated 2022-01-07.},
  langid = {english}
}

@misc{1779363LargePerformance,
  title = {1779363 - {{Large}} Performance Difference When Loading a {{PDF}} in "Performance" vs "Energy Saving" Mode},
  url = {https://bugzilla.mozilla.org/show_bug.cgi?id=1779363},
  urldate = {2023-04-06},
  abstract = {NEW (nobody) in Core - Performance. Last updated 2023-01-17.},
  langid = {english}
}

@inproceedings{aggarwalGreenAdvisorToolAnalyzing2015,
  title = {{{GreenAdvisor}}: {{A}} Tool for Analyzing the Impact of Software Evolution on Energy Consumption},
  shorttitle = {{{GreenAdvisor}}},
  booktitle = {2015 {{IEEE International Conference}} on {{Software Maintenance}} and {{Evolution}} ({{ICSME}})},
  author = {Aggarwal, Karan and Hindle, Abram and Stroulia, Eleni},
  year = {2015},
  month = sep,
  pages = {311--320},
  publisher = {{IEEE}},
  address = {{Bremen, Germany}},
  doi = {10.1109/ICSM.2015.7332477},
  url = {http://ieeexplore.ieee.org/document/7332477/},
  urldate = {2022-12-20},
  isbn = {978-1-4673-7532-0}
}

@misc{AllYourTracing2021,
  title = {All Your Tracing Are Belong to {{BPF}}},
  year = {2021},
  month = nov,
  journal = {Trail of Bits Blog},
  url = {https://blog.trailofbits.com/2021/11/09/all-your-tracing-are-belong-to-bpf/},
  urldate = {2023-04-06},
  abstract = {By Alessandro Gario, Senior Software Engineer Originally published August 11, 2021 TL;DR: These simpler, step-by-step methods equip you to apply BPF tracing technology to real-word problems\textemdash no spec\ldots},
  langid = {american}
}

@misc{ApproachGetPower,
  title = {An Approach to Get Power Consumption Metrics Right on {{Linux}}},
  url = {https://blog.fluxcoil.net/posts/2021/06/measuring-power-consumption-on-linux/},
  urldate = {2023-04-06}
}

@misc{BPFArchitectureCilium,
  title = {{{BPF Architecture}} \textemdash{} {{Cilium}} 1.13.1 Documentation},
  url = {https://docs.cilium.io/en/stable/bpf/architecture/},
  urldate = {2023-03-25},
  file = {/var/home/marty/Zotero/storage/KREG96RB/architecture.html}
}

@misc{BPFCompilerCollection2022,
  title = {{{BPF Compiler Collection}} ({{BCC}})},
  year = {2022},
  month = sep,
  url = {https://github.com/iovisor/bcc},
  urldate = {2022-09-21},
  abstract = {BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more},
  copyright = {Apache-2.0},
  howpublished = {IO Visor Project}
}

@misc{BPFCOREReference,
  title = {{{BPF CO-RE}} Reference Guide},
  url = {https://nakryiko.com/posts/bpf-core-reference-guide/},
  urldate = {2022-12-21}
}

@misc{BpfIntroduceNew,
  title = {Bpf: {{Introduce}} the New Ability of {{eBPF}} Programs to Access Hardware {{PMU}} Counter [{{LWN}}.Net]},
  url = {https://dollarsiteclub.com/Articles/652152/},
  urldate = {2023-04-06}
}

@misc{BPFPerformanceTools,
  title = {{{BPF Performance Tools}} ({{Book}})},
  url = {https://www.brendangregg.com/bpf-performance-tools-book.html},
  urldate = {2022-09-21}
}

@misc{BPFSystemCall,
  title = {The {{BPF}} System Call {{API}}, Version 14 [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/612878/},
  urldate = {2022-12-28},
  file = {/var/home/marty/Zotero/storage/LHWHIM6X/612878.html}
}

@misc{BPFTipsTricks,
  title = {{{BPF}} Tips \& Tricks: The Guide to Bpf\_trace\_printk() and Bpf\_printk()},
  url = {https://nakryiko.com/posts/bpf-tips-printk/},
  urldate = {2023-04-06}
}

@misc{Bpftrace,
  title = {Bpftrace},
  url = {https://github.com/iovisor/bpftrace},
  urldate = {2022-12-28},
  abstract = {High-level tracing language for Linux eBPF. Contribute to iovisor/bpftrace development by creating an account on GitHub.},
  copyright = {Apache-2.0},
  howpublished = {IO Visor Project},
  file = {/var/home/marty/Zotero/storage/57JVZ36A/bpftrace.html}
}

@misc{braisAnswerPerfPower2019,
  title = {Answer to "Perf Power Consumption Measure: {{How}} Does It Work?"},
  shorttitle = {Answer to "perf Power Consumption Measure},
  author = {Brais, Hadi},
  year = {2019},
  month = may,
  journal = {Stack Overflow},
  url = {https://stackoverflow.com/a/55961143},
  urldate = {2023-04-06}
}

@misc{BranchlessProgrammingAlgorithmica,
  title = {Branchless {{Programming}} - {{Algorithmica}}},
  url = {https://en.algorithmica.org/hpc/pipelining/branchless/},
  urldate = {2023-04-06}
}

@misc{brendanBPFBinariesBTF2020,
  title = {{{BPF}} Binaries: {{BTF}}, {{CO-RE}}, and the Future of {{BPF}} Perf Tools},
  author = {Brendan, Gregg},
  year = {2020},
  month = nov,
  journal = {Brendan Gregg},
  url = {https://www.brendangregg.com/blog/2020-11-04/bpf-co-re-btf-libbpf.html},
  urldate = {2022-12-28},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/B6JN37W5/bpf-co-re-btf-libbpf.html}
}

@misc{brendanFrequencyTrails2014,
  title = {Frequency {{Trails}}},
  author = {Brendan, Gregg},
  year = {2014},
  month = feb,
  journal = {Brendan Gregg},
  url = {https://brendangregg.com/frequencytrails.html},
  urldate = {2023-04-06},
  langid = {english}
}

@misc{Bug16004Multicore,
  title = {Bug\#16004: {{Multicore Core-utils}}},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2013-11/msg00185.html},
  urldate = {2023-04-06}
}

@misc{Bug16309Cp,
  title = {Bug\#16309: Cp Is a Cpu Hog},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2013-12/msg00088.html},
  urldate = {2023-04-06}
}

@misc{Bug28506Coreutils,
  title = {Bug\#28506: Coreutils 8.28 Test Suite Hangs on {{APFS}} Filesystem},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2018-10/msg00301.html},
  urldate = {2023-04-06}
}

@misc{Bug32099Benchmarks,
  title = {Bug\#32099: {{Benchmarks}}: {{Hashing}} \textasciitilde 70\% Faster ({{Was}}: {{New}} Uniq Option for Spe},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2018-07/msg00006.html},
  urldate = {2023-04-06}
}

@misc{Bug32099Datamash,
  title = {Bug\#32099: Datamash Wins! ({{Was}}: {{New}} Uniq Option for Speed)},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2018-07/msg00014.html},
  urldate = {2023-04-06}
}

@misc{Bug32796Please,
  title = {Bug\#32796: Please Consider Using Renameat2 from Glibc If Available},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2018-09/msg00019.html},
  urldate = {2023-04-06}
}

@misc{Bug35531Problem,
  title = {Bug\#35531: Problem with Ls in Coreutils},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2019-05/msg00011.html},
  urldate = {2023-04-06}
}

@misc{Bug37093Wc,
  title = {Bug\#37093: Wc Runs 100\% Cpu When in Pipeline or Tee {$>$}(Wc)},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2019-08/msg00039.html},
  urldate = {2023-04-06}
}

@misc{Bug37864Bug,
  title = {Bug\#37864: Bug: Env Exec Bomb (No Hash Bang Arg)},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2019-10/msg00027.html},
  urldate = {2023-04-06}
}

@misc{Bug40533GNU,
  title = {Bug\#40533: {{GNU}} Sort Could Be Faster on Machines with More Cores},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2020-04/msg00006.html},
  urldate = {2023-04-06}
}

@misc{Bug42044Nproc,
  title = {Bug\#42044: Nproc Says "1" on Mobile Processors},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2020-06/msg00049.html},
  urldate = {2023-04-06},
  file = {/var/home/marty/Zotero/storage/KIXX5TSA/msg00049.html}
}

@misc{Bug46169Parallelize,
  title = {Bug\#46169: {{Parallelize}} Merge Sort},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2021-01/msg00047.html},
  urldate = {2023-04-06}
}

@misc{BuildingBPFApplications,
  title = {Building {{BPF}} Applications with Libbpf-Bootstrap},
  url = {https://nakryiko.com/posts/libbpf-bootstrap/#includes-vmlinux-h-libbpf-and-app-headers},
  urldate = {2022-12-21}
}

@inproceedings{carrollAnalysisPowerConsumption2010,
  title = {An Analysis of Power Consumption in a Smartphone},
  booktitle = {Proceedings of the 2010 {{USENIX}} Conference on {{USENIX}} Annual Technical Conference},
  author = {Carroll, Aaron and Heiser, Gernot},
  year = {2010},
  month = jun,
  series = {{{USENIXATC}}'10},
  pages = {21},
  publisher = {{USENIX Association}},
  address = {{USA}},
  urldate = {2023-04-06},
  abstract = {Mobile consumer-electronics devices, especially phones, are powered from batteries which are limited in size and therefore capacity. This implies that managing energy well is paramount in such devices. Good energy management requires a good understanding of where and how the energy is used. To this end we present a detailed analysis of the power consumption of a recent mobile phone, the Openmoko Neo Freerunner. We measure not only overall system power, but the exact breakdown of power consumption by the device's main hardware components. We present this power breakdown for micro-benchmarks as well as for a number of realistic usage scenarios. These results are validated by overall power measurements of two other devices: the HTC Dream and Google Nexus One. We develop a power model of the Freerunner device and analyse the energy usage and battery lifetime under a number of usage patterns. We discuss the significance of the power drawn by various components, and identify the most promising areas to focus on for further improvements of power management. We also analyse the energy impact of dynamic voltage and frequency scaling of the device's application processor.}
}

@misc{cees-bartbreunesseJlsca2023,
  title = {Jlsca},
  author = {{Cees-Bart Breunesse} and {Ilya Kizhvatov} and {Ruben Muijrers} and {Riscure}},
  year = {2023},
  month = mar,
  url = {https://github.com/Riscure/Jlsca},
  urldate = {2023-04-30},
  abstract = {Side-channel toolkit in Julia},
  copyright = {GPL-3.0},
  howpublished = {Riscure},
  keywords = {attack,differential-power-analysis,dpa,high-performance-computing,inspector,parallelism,side-channel}
}

@misc{Chipwhisperer,
  title = {Chipwhisperer},
  url = {https://github.com/newaetech/chipwhisperer},
  urldate = {2023-04-30},
  abstract = {The complete open-source toolchain for side-channel power analysis and glitching attacks.},
  copyright = {GPL-2.0},
  howpublished = {NewAE Technology Inc.}
}

@inproceedings{chowdhuryGreenOracleEstimatingSoftware2016,
  title = {{{GreenOracle}}: Estimating Software Energy Consumption with Energy Measurement Corpora},
  shorttitle = {{{GreenOracle}}},
  booktitle = {Proceedings of the 13th {{International Conference}} on {{Mining Software Repositories}}},
  author = {Chowdhury, Shaiful Alam and Hindle, Abram},
  year = {2016},
  month = may,
  series = {{{MSR}} '16},
  pages = {49--60},
  publisher = {{Association for Computing Machinery}},
  address = {{New York, NY, USA}},
  doi = {10.1145/2901739.2901763},
  url = {https://doi.org/10.1145/2901739.2901763},
  urldate = {2023-04-06},
  abstract = {Software energy consumption is a relatively new concern for mobile application developers. Poor energy performance can harm adoption and sales of applications. Unfortunately for the developers, the measurement of software energy consumption is expensive in terms of hardware and difficult in terms of expertise. Many prior models of software energy consumption assume that developers can use hardware instrumentation and thus cannot evaluate software running within emulators or virtual machines. Some prior models require actual energy measurements from the previous versions of applications in order to model the energy consumption of later versions of the same application. In this paper, we take a big-data approach to software energy consumption and present a model that can estimate software energy consumption mostly within 10\% error (in joules) and does not require the developer to train on energy measurements of their own applications. This model leverages a big-data approach whereby a collection of prior applications' energy measurements allows us to train, transmit, and apply the model to estimate any foreign application's energy consumption for a test run. Our model is based on the dynamic traces of system calls and CPU utilization.},
  isbn = {978-1-4503-4186-8}
}

@misc{corbetBPFComesFirewalls2018,
  title = {{{BPF}} Comes to Firewalls},
  author = {Corbet, Jonathan},
  year = {2018},
  month = feb,
  journal = {LWN.net},
  url = {https://lwn.net/Articles/747551/},
  urldate = {2023-03-24},
  copyright = {Creative Commons CC BY-SA 4.0},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/643NF3P2/747551.html}
}

@misc{CPUPegged1002020,
  title = {{{CPU}} Pegged at 100\% (\#950) {$\cdot$} {{Issues}} {$\cdot$} {{GNOME}} / Gnome-Software {$\cdot$} {{GitLab}}},
  year = {2020},
  month = mar,
  journal = {GitLab},
  url = {https://gitlab.gnome.org/GNOME/gnome-software/-/issues/950},
  urldate = {2023-04-06},
  abstract = {Hi, I have a gnome-software process that is stuck days eating one CPU core. The process is gnome-software --gapplication-service, and it happened multiple times after the...},
  langid = {english}
}

@article{cruzEnergyFootprintMobile2021,
  title = {On the {{Energy Footprint}} of {{Mobile Testing Frameworks}}},
  author = {Cruz, Lu{\'i}s and Abreu, Rui},
  year = {2021},
  month = oct,
  journal = {IEEE Transactions on Software Engineering},
  volume = {47},
  number = {10},
  pages = {2260--2271},
  issn = {1939-3520},
  doi = {10.1109/TSE.2019.2946163},
  abstract = {High energy consumption is a challenging issue that an ever increasing number of mobile applications face today. However, energy consumption is being tested in an ad hoc way, despite being an important non-functional requirement of an application. Such limitation becomes particularly disconcerting during software testing: on the one hand, developers do not really know how to measure energy; on the other hand, there is no knowledge as to what is the energy overhead imposed by the testing framework. In this paper, as we evaluate eight popular mobile UI automation frameworks, we have discovered that there are automation frameworks that increase energy consumption up to roughly 2200 percent. While limited in the interactions one can do, Espresso is the most energy efficient framework. However, depending on the needs of the tester, Appium, Monkeyrunner, or UIAutomator are good alternatives. In practice, results show that deciding which is the most suitable framework is vital. We provide a decision tree to help developers make an educated decision on which framework suits best their testing needs.},
  keywords = {Automation,energy consumption,Energy consumption,Energy measurement,Mobile testing,Monitoring,Robots,Testing,testing frameworks,Tools},
  file = {/var/home/marty/Zotero/storage/D2U8QQSJ/Cruz ja Abreu - 2021 - On the Energy Footprint of Mobile Testing Framewor.pdf}
}

@misc{CtypesForeignFunction,
  title = {Ctypes \textemdash{} {{A}} Foreign Function Library for {{Python}}},
  journal = {Python documentation},
  url = {https://docs.python.org/3/library/ctypes.html},
  urldate = {2023-04-25},
  abstract = {ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/7JSIKKDQ/ctypes.html}
}

@misc{DetectingEnergyBugs,
  title = {Detecting Energy Bugs and Hotspots in Mobile Apps | {{Proceedings}} of the 22nd {{ACM SIGSOFT International Symposium}} on {{Foundations}} of {{Software Engineering}}},
  url = {https://dl.acm.org/doi/10.1145/2635868.2635871},
  urldate = {2023-04-06}
}

@misc{DiveBPFList,
  title = {Dive into {{BPF}}: A List of Reading Material},
  url = {https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/},
  urldate = {2023-04-06}
}

@misc{ebpf&ciliumcommunityHowWhenYou2020,
  title = {How and {{When You Should Measure CPU Overhead}} of {{eBPF Programs}} - {{Bryce Kahle}}, {{Datadog}} - {{Full}}},
  author = {{eBPF \& Cilium Community}},
  year = {2020},
  month = nov,
  url = {https://www.youtube.com/watch?v=b0TxKiGMWpI},
  urldate = {2023-04-06},
  abstract = {Datadog deploys eBPF code to our agents at scale. Our customers expect a minimal CPU footprint across releases. Join us to discover how we measure eBPF CPU overhead across multiple platforms and operating systems. You'll see a demo Go library, demonstrating how we benchmark our eBPF code, ensuring we don't introduce performance regressions.}
}

@misc{Ebpfbench2023,
  title = {Ebpfbench},
  year = {2023},
  month = jan,
  url = {https://github.com/DataDog/ebpfbench},
  urldate = {2023-04-06},
  abstract = {profile eBPF programs from Go},
  copyright = {BSD-3-Clause},
  howpublished = {Datadog, Inc.}
}

@misc{EbpfExporter2023,
  title = {Ebpf\_exporter},
  year = {2023},
  month = mar,
  url = {https://github.com/cloudflare/ebpf_exporter},
  urldate = {2023-03-24},
  abstract = {Prometheus exporter for custom eBPF metrics},
  copyright = {MIT},
  howpublished = {Cloudflare},
  keywords = {bpf,ebpf,libbpf,linux-kernel,performance,prometheus,prometheus-exporter,tracing}
}

@misc{EBPFInstructionSets2021,
  title = {{{eBPF Instruction Sets}}},
  year = {2021},
  month = oct,
  journal = {{$\pi$} {$\cdot$} chaingo},
  url = {https://pchaigno.github.io/bpf/2021/10/20/ebpf-instruction-sets.html},
  urldate = {2022-12-21},
  abstract = {Not everyone who develops BPF programs knows that several versions of the instruction set exist. This isn't really surprising given documentation on the subject is scarce. So let's go through the different eBPF instruction sets, why they exist, and why their choice matters.},
  langid = {english}
}

@misc{EBPFOverviewPart,
  title = {An {{eBPF}} Overview, Part 1: {{Introduction}}},
  shorttitle = {An {{eBPF}} Overview, Part 1},
  journal = {Collabora | Open Source Consulting},
  url = {https://www.collabora.com/news-and-blog/blog/2019/04/05/an-ebpf-overview-part-1-introduction/},
  urldate = {2023-03-25},
  abstract = {Interested in learning more about low-level specifics of the eBPF stack? Read on as we take a deep dive, from its VM mechanisms and tools, to running traces on remote, resource-constrained embedded devices.},
  langid = {english}
}

@misc{EBPFOverviewParta,
  title = {An {{eBPF}} Overview, Part 2: {{Machine}} \& Bytecode},
  shorttitle = {An {{eBPF}} Overview, Part 2},
  journal = {Collabora | Open Source Consulting},
  url = {https://www.collabora.com/news-and-blog/blog/2019/04/15/an-ebpf-overview-part-2-machine-and-bytecode/},
  urldate = {2023-03-25},
  abstract = {The second part of this series takes a more in-depth look at the eBPF VM and program studied in the first part.},
  langid = {english}
}

@misc{EBPFWindows2023,
  title = {{{eBPF}} for {{Windows}}},
  year = {2023},
  month = jan,
  url = {https://github.com/microsoft/ebpf-for-windows},
  urldate = {2023-01-03},
  abstract = {eBPF implementation that runs on top of Windows},
  copyright = {MIT},
  howpublished = {Microsoft}
}

@misc{FeaturesBpftoolThread,
  title = {Features of Bpftool: The Thread of Tips and Examples to Work with {{eBPF}} Objects},
  url = {https://qmonnet.github.io/whirl-offload/2021/09/23/bpftool-features-thread/},
  urldate = {2023-04-30},
  file = {/var/home/marty/Zotero/storage/NZRVY6EU/bpftool-features-thread.html}
}

@book{fiedorPerunDocumentation2022,
  title = {Perun {{Documentation}}},
  author = {Fiedor, Tom{\'a}{\v e} and Pavela, Ji{\v r}{\'i}},
  year = {2022},
  month = jun,
  url = {https://raw.githubusercontent.com/tfiedor/perun/master/docs/pdf/perun.pdf},
  urldate = {2022-09-21},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/W6TULS2J/Fiedor ja Pavela - Perun Documentation.pdf}
}

@misc{fiedorPerunLightweightPerformance2022,
  title = {Perun: {{Lightweight Performance Version System}}},
  shorttitle = {Perun},
  author = {Fiedor, Tom{\'a}{\v s} and Pavela, Ji{\v r}{\'i}},
  year = {2022},
  month = jul,
  url = {https://github.com/tfiedor/perun},
  urldate = {2022-09-21},
  abstract = {Lightweight Performance Control System},
  copyright = {GPL-3.0}
}

@misc{filionLinuxBlockTracing2017,
  title = {Linux {{Block I}}/{{O Tracing}}},
  author = {Filion, Mark},
  year = {2017},
  month = mar,
  journal = {Linux.com},
  url = {https://www.linux.com/topic/networking/linux-block-io-tracing/},
  urldate = {2023-04-06},
  abstract = {Written by Gabriel Krisman Bertazi, Software Engineer at Collabora. Like starting a car with the hood open, sometimes you need to run your program with certain analysis tools attached to get a full sense of what is going wrong \textendash{} or right. Be it to debug an issue, or simply to learn how that program \ldots},
  chapter = {Networking},
  langid = {american}
}

@bachelorsthesis{FITBT20045,
  type = {{Bachelor's thesis}},
  title = {{Knihovna pro profilov\'an\'i datov\'ych struktur program\r{u} C/C++}},
  author = {Pavela, Ji{\v r}{\'i}},
  year = {2017},
  address = {{Brno, CZ}},
  url = {https://www.fit.vut.cz/study/thesis/20045/},
  langid = {czech},
  school = {Vysok\'e u\v{c}en\'i technick\'e v Brn\v{e}, Fakulta informa\v{c}n\'ich technologi\'i},
  file = {/var/home/marty/Zotero/storage/SQ9PLRCH/Pavela - 2017 - Knihovna pro profilování datových struktur program.pdf}
}

@bachelorsthesis{FITBT23847,
  type = {Bakal\'a\v{r}sk\'a Pr\'ace},
  title = {Performance Analysis of Programs Based on {{PIN}} Framework},
  author = {Mo{\v c}{\'a}ry, Peter},
  year = {2022},
  address = {{Brno, CZ}},
  url = {https://www.fit.vut.cz/study/thesis/23847/},
  langid = {english},
  school = {Vysok\'e u\v{c}en\'i technick\'e v Brn\v{e}, Fakulta informa\v{c}n\'ich technologi\'i}
}

@mastersthesis{FITMT19092,
  title = {Efficient Techniques for Program Performance Analysis},
  author = {Pavela, Ji{\v r}{\'i}},
  year = {2020},
  address = {{Brno, CZ}},
  url = {https://www.fit.vut.cz/study/thesis/19092/},
  langid = {english},
  school = {Vysok\'e u\v{c}en\'i technick\'e v Brn\v{e}, Fakulta informa\v{c}n\'ich technologi\'i},
  file = {/var/home/marty/Zotero/storage/UJUBNCWU/Pavela - 2020 - Efficient techniques for program performance analy.pdf}
}

@misc{FrequencyThrottlingSide,
  title = {Frequency {{Throttling Side Channel Guidance}}},
  journal = {Intel},
  url = {https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/best-practices/frequency-throttling-side-channel-guidance.html},
  urldate = {2023-04-06},
  abstract = {CPU frequency throttling is triggered when CPU power limits are reached. This article provides software guidance for mitigating timing side channels due to CPU frequency behavior.},
  langid = {english}
}

@misc{gaddehosurMakingEBPFWork2021,
  title = {Making {{eBPF}} Work on {{Windows}}},
  author = {Gaddehosur, Poorna, Dave Thaler},
  year = {2021},
  month = may,
  journal = {Microsoft Open Source Blog},
  url = {https://cloudblogs.microsoft.com/opensource/2021/05/10/making-ebpf-work-on-windows/},
  urldate = {2023-01-03},
  abstract = {eBPF is a well-known but revolutionary technology\textemdash providing programmability, extensibility, and agility. eBPF has been applied to use cases such as denial-of-service protection and observability. Over time, a significant ecosystem of tools, products, and experience has been built up around eBPF. Although support for eBPF was first implemented in the Linux kernel, there has been increasingRead more},
  langid = {american},
  file = {/var/home/marty/Zotero/storage/JVPHV7N3/making-ebpf-work-on-windows.html}
}

@inproceedings{garciaExplorationEnergyConsumption2019,
  title = {Exploration of {{Energy Consumption Using}} the {{Intel Running Average Power Limit Interface}}},
  booktitle = {2019 {{IEEE Space Computing Conference}} ({{SCC}})},
  author = {Garcia, Joe A.},
  year = {2019},
  month = jul,
  pages = {1--10},
  doi = {10.1109/SpaceComp.2019.00005},
  abstract = {With the rising need for computational power, High Performance Computing (HPC) systems are finding their way into various frameworks such as Spaceborne applications. Achieving an optimum combination between performance and power utilization for HPCtype systems in harsh environments can be a challenge. In order to combat these challenges, it is essential to understand the characteristics of the system hardware and software. In this project, the Intel Running Average Power Limit (RAPL) interface provides measurements of energy consumption for two HPC applications, Weather Research and Forecasting (WRF) and TensorFlow. Applications were based on popularity in the HPC community and potential uses in space missions. A way to understand performance on a multi-core system is through affinity. Affinity, or pinning tasks and threads to cores, is needed to ensure workloads are distributed to the desired cores on the chip. Various affinity settings were applied to the WRF and TensorFlow applications in order to assess the performance and power efficiency at the single node level.},
  keywords = {Affinity,Computer architecture,Hardware,High-Performance-Computing,Power demand,Power measurement,Power-Consumption,Running-Average-Power-Limit,Software,Task analysis,Tools},
  file = {/var/home/marty/Zotero/storage/4VFRQ84Z/Garcia - 2019 - Exploration of Energy Consumption Using the Intel .pdf;/var/home/marty/Zotero/storage/68LUQ66N/stamp.html;/var/home/marty/Zotero/storage/ZZMJEUW8/stamp.html}
}

@misc{gauravkamatheUnderstandingSystemCalls2019,
  title = {Understanding System Calls on {{Linux}} with Strace},
  author = {{Gaurav Kamathe}},
  year = {2019},
  month = oct,
  journal = {opensource.com},
  url = {https://opensource.com/article/19/10/strace},
  urldate = {2023-04-06},
  abstract = {Trace the thin layer between user processes and the Linux kernel with strace.},
  langid = {english}
}

@misc{GentleIntroductionEBPF,
  title = {A {{Gentle Introduction}} to {{eBPF}}},
  journal = {InfoQ},
  url = {https://www.infoq.com/articles/gentle-linux-ebpf-introduction/},
  urldate = {2023-04-06},
  abstract = {eBPF lets programmers execute custom bytecode within the kernel without having to change the kernel or load kernel modules.  In this article, we will review what eBPF is, what it does, and how it works. Then, we will explain how to execute an eBPF program and provide an example of eBPF in action. Finally, we will conclude with recommendations for next steps.},
  langid = {english}
}

@inproceedings{giardinoCorrelatingHardwarePerformance2016,
  title = {Correlating {{Hardware Performance Events}} to {{CPU}} and {{DRAM Power Consumption}}},
  booktitle = {2016 {{IEEE International Conference}} on {{Networking}}, {{Architecture}} and {{Storage}} ({{NAS}})},
  author = {Giardino, Michael and Ferri, Bonnie},
  year = {2016},
  month = aug,
  pages = {1--2},
  doi = {10.1109/NAS.2016.7549395},
  abstract = {There are numerous ways to control power usage of modern systems. Dynamic voltage and frequency scaling (DVFS) and C- and P-states are commonly available in hardware, and operating systems have fine-grained control of these states. Unfortunately, most DVFS systems simply consider CPU utilization when determining which P-state to enter. Running average power limit (RAPL), introduced by Intel in their Sandy Bridge line of processors, allows researchers and system designer to obtain detailed estimates of energy consumption by the core, uncore and DRAM. In this paper we use Linux's perf\_events subsystem to measure a number of commonly cited performance metrics while running the SPEC CPU2006 benchmarks in addition to calculating average power using RAPL registers. This paper shows initial promising results correlating DRAM memory consumption to stall-cycle ratio.},
  keywords = {Benchmark testing,Energy measurement,Power demand,Power measurement,Random access memory,Time-frequency analysis},
  file = {/var/home/marty/Zotero/storage/5LMLQA5C/Giardino ja Ferri - 2016 - Correlating Hardware Performance Events to CPU and.pdf}
}

@misc{GNOMEShell2023,
  title = {{{GNOME Shell}}},
  year = {2023},
  month = apr,
  url = {https://gitlab.gnome.org/GNOME/gnome-shell},
  urldate = {2023-04-19},
  abstract = {GNOME Shell provides core user interface functions for the GNOME desktop, like switching to windows and launching applications.},
  copyright = {GPL-2.0},
  howpublished = {GNOME},
  file = {/var/home/marty/Zotero/storage/TXU9Q4TQ/gnome-shell.html}
}

@misc{GnomesoftwareUsing2002022,
  title = {Gnome-Software Using 200\% Cpu, Non-Gui Process (\#1897) {$\cdot$} {{Issues}} {$\cdot$} {{GNOME}} / Gnome-Software {$\cdot$} {{GitLab}}},
  year = {2022},
  month = sep,
  journal = {GitLab},
  url = {https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1897},
  urldate = {2023-04-06},
  abstract = {Please describe the issue you're experiencing: top reports gnome-software is using 200\% CPU, even though the app hasn't been launched (by the user), and is rapidly draining the...},
  langid = {english}
}

@inproceedings{hackenbergEnergyEfficiencyFeature2015,
  title = {An {{Energy Efficiency Feature Survey}} of the {{Intel Haswell Processor}}},
  booktitle = {2015 {{IEEE International Parallel}} and {{Distributed Processing Symposium Workshop}}},
  author = {Hackenberg, Daniel and Sch{\"o}ne, Robert and Ilsche, Thomas and Molka, Daniel and Schuchart, Joseph and Geyer, Robin},
  year = {2015},
  month = may,
  pages = {896--904},
  doi = {10.1109/IPDPSW.2015.70},
  abstract = {The recently introduced Intel Xeon E5-1600 v3 and E5-2600 v3 series processors \textendash{} codenamed Haswell-EP \textendash{} implement major changes compared to their predecessors. Among these changes are integrated voltage regulators that enable individual voltages and frequencies for every core. In this paper we analyze a number of consequences of this development that are of utmost importance for energy efficiency optimization strategies such as dynamic voltage and frequency scaling (DVFS) and dynamic concurrency throttling (DCT). This includes the enhanced RAPL implementation and its improved accuracy as it moves from modeling to actual measurement. Another fundamental change is that every clock speed above AVX frequency \textendash{} including nominal frequency \textendash{} is opportunistic and unreliable, which vastly decreases performance predictability with potential effects on scalability. Moreover, we characterize significantly changed p-state transition behavior, and determine crucial memory performance data.},
  keywords = {Benchmark testing,Energy measurement,Frequency measurement,Power demand,Random access memory,Regulators,Voltage control},
  file = {/var/home/marty/Zotero/storage/MXD4VZ5U/Hackenberg ym. - 2015 - An Energy Efficiency Feature Survey of the Intel H.pdf;/var/home/marty/Zotero/storage/85IVCZ8Y/stamp.html}
}

@article{harrisArrayProgrammingNumPy2020,
  title = {Array Programming with {{NumPy}}},
  author = {Harris, Charles R. and Millman, K. Jarrod and {van der Walt}, St{\'e}fan J. and Gommers, Ralf and Virtanen, Pauli and Cournapeau, David and Wieser, Eric and Taylor, Julian and Berg, Sebastian and Smith, Nathaniel J. and Kern, Robert and Picus, Matti and Hoyer, Stephan and {van Kerkwijk}, Marten H. and Brett, Matthew and Haldane, Allan and {del R{\'i}o}, Jaime Fern{\'a}ndez and Wiebe, Mark and Peterson, Pearu and {G{\'e}rard-Marchant}, Pierre and Sheppard, Kevin and Reddy, Tyler and Weckesser, Warren and Abbasi, Hameer and Gohlke, Christoph and Oliphant, Travis E.},
  year = {2020},
  month = sep,
  journal = {Nature},
  volume = {585},
  number = {7825},
  pages = {357--362},
  issn = {0028-0836, 1476-4687},
  doi = {10.1038/s41586-020-2649-2},
  url = {https://www.nature.com/articles/s41586-020-2649-2},
  urldate = {2023-04-17},
  abstract = {Abstract                            Array programming provides a powerful, compact and expressive syntax for accessing, manipulating and operating on data in vectors, matrices and higher-dimensional arrays. NumPy is the primary array programming library for the Python language. It has an essential role in research analysis pipelines in fields as diverse as physics, chemistry, astronomy, geoscience, biology, psychology, materials science, engineering, finance and economics. For example, in astronomy, NumPy was an important part of the software stack used in the discovery of gravitational waves               1               and in the first imaging of a black hole               2               . Here we review how a few fundamental array concepts lead to a simple and powerful programming paradigm for organizing, exploring and analysing scientific data. NumPy is the foundation upon which the scientific Python ecosystem is constructed. It is so pervasive that several projects, targeting audiences with specialized needs, have developed their own NumPy-like interfaces and array objects. Owing to its central position in the ecosystem, NumPy increasingly acts as an interoperability layer between such array computation libraries and, together with its application programming interface (API), provides a flexible framework to support the next decade of scientific and industrial analysis.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/RHWL8KMB/Harris ym. - 2020 - Array programming with NumPy.pdf}
}

@inproceedings{hasanEnergyProfilesJava2016,
  title = {Energy Profiles of {{Java}} Collections Classes},
  booktitle = {Proceedings of the 38th {{International Conference}} on {{Software Engineering}}},
  author = {Hasan, Samir and King, Zachary and Hafiz, Munawar and Sayagh, Mohammed and Adams, Bram and Hindle, Abram},
  year = {2016},
  month = may,
  pages = {225--236},
  publisher = {{ACM}},
  address = {{Austin Texas}},
  doi = {10.1145/2884781.2884869},
  url = {https://dl.acm.org/doi/10.1145/2884781.2884869},
  urldate = {2022-12-20},
  isbn = {978-1-4503-3900-1},
  langid = {english}
}

@misc{HIDBPFLinuxKernel,
  title = {{{HID-BPF}} \textemdash{} {{The Linux Kernel}} Documentation},
  url = {https://docs.kernel.org/hid/hid-bpf.html},
  urldate = {2023-03-24},
  file = {/var/home/marty/Zotero/storage/6LBIFVD4/hid-bpf.html}
}

@misc{hielkedevriesIoUringechoserver,
  title = {Io\_uring-Echo-Server},
  author = {{Hielke de Vries}},
  url = {https://github.com/frevib/io_uring-echo-server},
  urldate = {2023-05-01},
  abstract = {io\_uring echo server},
  copyright = {MIT},
  file = {/var/home/marty/Zotero/storage/8XATADN4/io_uring-echo-server.html}
}

@misc{HowAddEBPF,
  title = {How {{To Add eBPF Observability To Your Product}}},
  url = {https://www.brendangregg.com/blog/2021-07-03/how-to-add-bpf-observability.html},
  urldate = {2022-12-21}
}

@misc{hoyerRustEchoBench,
  title = {Rust\_echo\_bench},
  shorttitle = {Haraldh/Rust\_echo\_bench},
  author = {Hoyer, Harald},
  url = {https://github.com/haraldh/rust_echo_bench},
  urldate = {2023-05-01},
  abstract = {rust echo server benchmark},
  copyright = {MIT},
  file = {/var/home/marty/Zotero/storage/A3DXK9YX/rust_echo_bench.html}
}

@article{hunterMatplotlib2DGraphics2007,
  title = {Matplotlib: {{A 2D Graphics Environment}}},
  shorttitle = {Matplotlib},
  author = {Hunter, John D.},
  year = {2007},
  journal = {Computing in Science \& Engineering},
  volume = {9},
  number = {3},
  pages = {90--95},
  issn = {1521-9615},
  doi = {10.1109/MCSE.2007.55},
  url = {http://ieeexplore.ieee.org/document/4160265/},
  urldate = {2023-04-17}
}

@misc{ImplementingEBPFWindows,
  title = {Implementing {{eBPF}} for {{Windows}} [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/857215/},
  urldate = {2022-12-26},
  file = {/var/home/marty/Zotero/storage/KTZQLYTV/857215.html}
}

@misc{ImplementingStraceRust,
  title = {Implementing Strace in {{Rust}}},
  url = {https://jakobwaibel.com/2022/06/06/ptrace/},
  urldate = {2022-12-21},
  file = {/var/home/marty/Zotero/storage/HD5YQ8EA/ptrace.html}
}

@misc{IntroBPFCORE2022,
  title = {Intro to {{BPF CO-RE}}},
  year = {2022},
  month = apr,
  journal = {Qais Yousef},
  url = {https://layalina.io/2022/04/23/intro-to-bpf-co-re.html},
  urldate = {2022-12-21},
  abstract = {In the past I've been very happy in using BCC and bpftrace to jump into the BPF wagon. But since I spend a lot of my time on embedded systems (mostly Android phones nowadays), getting these tools on these systems is a bit of a headache.},
  langid = {american},
  file = {/var/home/marty/Zotero/storage/JXV78R4B/intro-to-bpf-co-re.html}
}

@misc{issaprWhyLetEncrypt2020,
  title = {Why {{Let}}'s {{Encrypt}} Is a Really, Really, Really Bad Idea\ldots},
  author = {ISSAP{\textregistered}, CISSP{\textregistered}-, John Horst},
  year = {2020},
  month = aug,
  journal = {The Startup},
  url = {https://medium.com/swlh/why-lets-encrypt-is-a-really-really-really-bad-idea-d69308887801},
  urldate = {2022-10-29},
  abstract = {Did I mention it was a really bad idea???},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/SBJX4PIL/why-lets-encrypt-is-a-really-really-really-bad-idea-d69308887801.html}
}

@misc{JSONSchema,
  title = {{{JSON Schema}}},
  journal = {JSON Schema},
  url = {https://json-schema.org/},
  urldate = {2023-04-24},
  abstract = {The home of JSON Schema},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/79Q9KHG8/json-schema.org.html}
}

@inproceedings{kambadurExperimentalSurveyEnergy2014,
  title = {An Experimental Survey of Energy Management across the Stack},
  booktitle = {Proceedings of the 2014 {{ACM International Conference}} on {{Object Oriented Programming Systems Languages}} \& {{Applications}}},
  author = {Kambadur, Melanie and Kim, Martha A.},
  year = {2014},
  month = oct,
  series = {{{OOPSLA}} '14},
  pages = {329--344},
  publisher = {{Association for Computing Machinery}},
  address = {{New York, NY, USA}},
  doi = {10.1145/2660193.2660196},
  url = {https://doi.org/10.1145/2660193.2660196},
  urldate = {2023-04-06},
  abstract = {Modern demand for energy-efficient computation has spurred research at all levels of the stack, from devices to microarchitecture, operating systems, compilers, and languages. Unfortunately, this breadth has resulted in a disjointed space, with technologies at different levels of the system stack rarely compared, let alone coordinated. This work begins to remedy the problem, conducting an experimental survey of the present state of energy management across the stack. Focusing on settings that are exposed to software, we measure the total energy, average power, and execution time of 41 benchmark applications in 220 configurations, across a total of 200,000 program executions. Some of the more important findings of the survey include that effective parallelization and compiler optimizations have the potential to save far more energy than Linux's frequency tuning algorithms; that certain non-complementary energy strategies can undercut each other's savings by half when combined; and that while the power impacts of most strategies remain constant across applications, the runtime impacts vary, resulting in inconsistent energy impacts.},
  isbn = {978-1-4503-2585-1},
  keywords = {compilers,energy,frequency governors,idle states,measurement study,parallelism,power},
  file = {/var/home/marty/Zotero/storage/WT3TYNB8/Kambadur ja Kim - 2014 - An experimental survey of energy management across.pdf}
}

@inproceedings{kanEnergyEfficiencyTesting2013,
  title = {Energy {{Efficiency}} in {{Testing}} and {{Regression Testing}} -- {{A Comparison}} of {{DVFS Techniques}}},
  booktitle = {Proceedings of the 2013 13th {{International Conference}} on {{Quality Software}}},
  author = {Kan, Edward Y. Y.},
  year = {2013},
  month = jul,
  series = {{{QSIC}} '13},
  pages = {280--283},
  publisher = {{IEEE Computer Society}},
  address = {{USA}},
  doi = {10.1109/QSIC.2013.21},
  url = {https://doi.org/10.1109/QSIC.2013.21},
  urldate = {2023-04-06},
  abstract = {This paper conducts a pilot study on the energy efficiency in software regression testing. Existing techniques that harness the adjustment of CPU frequencies using Dynamic Voltage and Frequency Scaling can be classified into two categories: general and application-specific. However, existing general techniques ignore execution characteristics and existing application-specific techniques require execution profiling. We propose two non-intrusive algorithms (Case Majority and Case Optimal), which exploit an insight on regression test cases to assure efficiency in modified program versions. We conduct experimentation on three medium-size real-world benchmarks over a cycle-accurate power simulator. The empirical results show that applying our proposed techniques in the context of regression testing can effectively save more energy on one benchmark, and does not suffer from lower performance on the other two benchmarks.},
  isbn = {978-0-7695-5039-8},
  keywords = {DVFS,energy efficiency,energy savings,software testing,test harness,workload prediction}
}

@article{khanRAPLActionExperiences2018,
  title = {{{RAPL}} in {{Action}}: {{Experiences}} in {{Using RAPL}} for {{Power Measurements}}},
  shorttitle = {{{RAPL}} in {{Action}}},
  author = {Khan, Kashif Nizam and Hirki, Mikael and Niemi, Tapio and Nurminen, Jukka K. and Ou, Zhonghong},
  year = {2018},
  month = mar,
  journal = {ACM Transactions on Modeling and Performance Evaluation of Computing Systems},
  volume = {3},
  number = {2},
  pages = {9:1--9:26},
  issn = {2376-3639},
  doi = {10.1145/3177754},
  url = {https://doi.org/10.1145/3177754},
  urldate = {2023-04-06},
  abstract = {To improve energy efficiency and comply with the power budgets, it is important to be able to measure the power consumption of cloud computing servers. Intel's Running Average Power Limit (RAPL) interface is a powerful tool for this purpose. RAPL provides power limiting features and accurate energy readings for CPUs and DRAM, which are easily accessible through different interfaces on large distributed computing systems. Since its introduction, RAPL has been used extensively in power measurement and modeling. However, the advantages and disadvantages of RAPL have not been well investigated yet. To fill this gap, we conduct a series of experiments to disclose the underlying strengths and weaknesses of the RAPL interface by using both customized microbenchmarks and three well-known application level benchmarks: Stream, Stress-ng, and ParFullCMS. Moreover, to make the analysis as realistic as possible, we leverage two production-level power measurement datasets from the Taito, a supercomputing cluster of the Finnish Center of Scientific Computing and also replicate our experiments on Amazon EC2. Our results illustrate different aspects of RAPL and document the findings through comprehensive analysis. Our observations reveal that RAPL readings are highly correlated with plug power, promisingly accurate enough, and have negligible performance overhead. Experimental results suggest RAPL can be a very useful tool to measure and monitor the energy consumption of servers without deploying any complex power meters. We also show that there are still some open issues, such as driver support, non-atomicity of register updates, and unpredictable timings that might weaken the usability of RAPL in certain scenarios. For such scenarios, we pinpoint solutions and workarounds.},
  keywords = {DRAM power,power modeling,RAPL,RAPL accuracy,RAPL validation},
  file = {/var/home/marty/Zotero/storage/IYRZYGZZ/Khan ym. - 2018 - RAPL in Action Experiences in Using RAPL for Powe.pdf}
}

@misc{kizhvatovPysca2023,
  title = {Pysca},
  author = {Kizhvatov, Ilya},
  year = {2023},
  month = apr,
  url = {https://github.com/ikizhvatov/pysca},
  urldate = {2023-04-30},
  abstract = {Toolbox for advanced differential power analysis of symmetric key cryptographic algorithm implementations},
  copyright = {GPL-3.0},
  keywords = {cryptography-tools,differential-power-analysis,dpa,linear-regression,side-channel}
}

@inproceedings{kocherDifferentialPowerAnalysis1999,
  title = {Differential Power Analysis},
  booktitle = {Proceedings of the 19th Annual International Cryptology Conference on Advances in Cryptology},
  author = {Kocher, Paul C. and Jaffe, Joshua and Jun, Benjamin},
  year = {1999},
  series = {{{CRYPTO}} '99},
  pages = {388--397},
  publisher = {{Springer-Verlag}},
  address = {{Berlin, Heidelberg}},
  abstract = {Cryptosystem designers frequently assume that secrets will be manipulated in closed, reliable computing environments. Unfortunately, actual computers and microchips leak information about the operations they process. This paper examines specific methods for analyzing power consumption measurements to find secret keys from tamper resistant devices. We also discuss approaches for building cryptosystems that can operate securely in existing hardware that leaks information.},
  isbn = {3-540-66347-9},
  file = {/var/home/marty/Zotero/storage/DM8GG2LW/Kocher ym. - 1999 - Differential power analysis.pdf}
}

@misc{kocherIntroductionDifferentialPower1998,
  title = {Introduction to {{Differential Power Analysis}} and {{Related Attacks}}},
  author = {Kocher, Paul and Jaffe, Joshua and Jun, Benjamin},
  year = {1998},
  month = aug,
  url = {https://www.rambus.com/introduction-to-differential-power-analysis-and-related-attacks/},
  urldate = {2022-12-20},
  copyright = {Copyright \textcopyright{} 1998 by Cryptography Research},
  langid = {american},
  annotation = {Cryptography Research, Inc. Patents pending},
  file = {/var/home/marty/Zotero/storage/QGRR4M4W/DPATechInfo.pdf;/var/home/marty/Zotero/storage/F2ZWS5X9/introduction-to-differential-power-analysis-and-related-attacks.html}
}

@misc{Libbpf,
  title = {Libbpf},
  journal = {libbpf documentation},
  url = {https://libbpf.readthedocs.io/en/latest/index.html},
  urldate = {2022-12-21}
}

@inproceedings{liCalculatingSourceLine2013,
  title = {Calculating Source Line Level Energy Information for {{Android}} Applications},
  booktitle = {Proceedings of the 2013 {{International Symposium}} on {{Software Testing}} and {{Analysis}}},
  author = {Li, Ding and Hao, Shuai and Halfond, William G. J. and Govindan, Ramesh},
  year = {2013},
  month = jul,
  pages = {78--89},
  publisher = {{ACM}},
  address = {{Lugano Switzerland}},
  doi = {10.1145/2483760.2483780},
  url = {https://dl.acm.org/doi/10.1145/2483760.2483780},
  urldate = {2022-12-20},
  isbn = {978-1-4503-2159-4},
  langid = {english}
}

@inproceedings{limaHaskellGreenLand2016,
  title = {Haskell in {{Green Land}}: {{Analyzing}} the {{Energy Behavior}} of a {{Purely Functional Language}}},
  shorttitle = {Haskell in {{Green Land}}},
  booktitle = {2016 {{IEEE}} 23rd {{International Conference}} on {{Software Analysis}}, {{Evolution}}, and {{Reengineering}} ({{SANER}})},
  author = {Lima, Luis Gabriel and {Soares-Neto}, Francisco and Lieuthier, Paulo and Castor, Fernando and Melfe, Gilberto and Fernandes, Joao Paulo},
  year = {2016},
  month = mar,
  pages = {517--528},
  publisher = {{IEEE}},
  address = {{Suita}},
  doi = {10.1109/SANER.2016.85},
  url = {http://ieeexplore.ieee.org/document/7476671/},
  urldate = {2022-12-20},
  isbn = {978-1-5090-1855-0}
}

@misc{LinuxKernelDevelopers,
  title = {Linux {{Kernel Developers}}' Bpfconf 2019},
  url = {http://vger.kernel.org/bpfconf2019.html#session-2},
  urldate = {2023-04-30},
  file = {/var/home/marty/Zotero/storage/CJN2HPH4/bpfconf2019.html}
}

@misc{LinuxKernelPerf,
  title = {Linux Kernel Perf Architecture},
  url = {http://terenceli.github.io/%E6%8A%80%E6%9C%AF/2020/08/29/perf-arch},
  urldate = {2023-04-06}
}

@misc{LinuxWhatAre,
  title = {Linux - {{What}} Are {{Kernel PMU}} Event-s in Perf\_events List? - {{Unix}} \& {{Linux Stack Exchange}}},
  url = {https://unix.stackexchange.com/questions/326621/what-are-kernel-pmu-event-s-in-perf-events-list},
  urldate = {2023-04-06}
}

@incollection{liuDataOrientedCharacterizationApplicationLevel2015,
  title = {Data-{{Oriented Characterization}} of {{Application-Level Energy Optimization}}},
  booktitle = {Fundamental {{Approaches}} to {{Software Engineering}}},
  author = {Liu, Kenan and Pinto, Gustavo and Liu, Yu David},
  editor = {Egyed, Alexander and Schaefer, Ina},
  year = {2015},
  volume = {9033},
  pages = {316--331},
  publisher = {{Springer Berlin Heidelberg}},
  address = {{Berlin, Heidelberg}},
  doi = {10.1007/978-3-662-46675-9\_21},
  url = {http://link.springer.com/10.1007/978-3-662-46675-9_21},
  urldate = {2022-12-20},
  isbn = {978-3-662-46674-2 978-3-662-46675-9},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/K8EEYX34/Liu ym. - 2015 - Data-Oriented Characterization of Application-Leve.pdf}
}

@misc{LoadingPtraceIng,
  title = {Loading and Ptrace'ing a Process in {{Rust}}},
  url = {http://system.joekain.com/2015/07/15/rust-load-and-ptrace.html},
  urldate = {2022-12-21}
}

@misc{ManifestoAgileSoftware,
  title = {Manifesto for {{Agile Software Development}}},
  url = {https://agilemanifesto.org/},
  urldate = {2022-12-26}
}

@inproceedings{manotasSEEDSSoftwareEngineer2014,
  title = {{{SEEDS}}: A Software Engineer's Energy-Optimization Decision Support Framework},
  shorttitle = {{{SEEDS}}},
  booktitle = {Proceedings of the 36th {{International Conference}} on {{Software Engineering}}},
  author = {Manotas, Irene and Pollock, Lori and Clause, James},
  year = {2014},
  month = may,
  pages = {503--514},
  publisher = {{ACM}},
  address = {{Hyderabad India}},
  doi = {10.1145/2568225.2568297},
  url = {https://dl.acm.org/doi/10.1145/2568225.2568297},
  urldate = {2022-12-20},
  isbn = {978-1-4503-2756-5},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/ECV7SN62/Manotas et al. - 2014 - SEEDS a software engineer's energy-optimization d.pdf}
}

@inproceedings{mccanneBSDPacketFilter1993,
  title = {The {{BSD}} Packet Filter: {{A}} New Architecture for User-Level Packet Capture},
  booktitle = {Proceedings of the {{USENIX}} Winter 1993 Conference Proceedings on {{USENIX}} Winter 1993 Conference Proceedings},
  author = {McCanne, Steven and Jacobson, Van},
  year = {1993},
  series = {{{USENIX}}'93},
  pages = {2},
  publisher = {{USENIX Association}},
  address = {{USA}},
  abstract = {Many versions of Unix provide facilities for user-level packet capture, making possible the use of general purpose workstations for network monitoring. Because network monitors run as user-level processes, packets must be copied across the kernel/user-space protection boundary. This copying can be minimized by deploying a kernel agent called a packet filter, which discards unwanted packets as early as possible. The original Unix packet filter was designed around a stack-based filter evaluator that performs sub-optimally on current RISC CPUs. The BSD Packet Filter (BPF) uses a new, register-based filter evaluator that is up to 20 times faster than the original design. BPF alson uses a straighforward buffering strategy that makes its overall performance up to 100 times faster than Sun's NIT running on the same hardware.},
  file = {/var/home/marty/Zotero/storage/5AEE68ID/bpf-usenix93.pdf}
}

@inproceedings{mckinneyDataStructuresStatistical2010,
  title = {Data {{Structures}} for {{Statistical Computing}} in {{Python}}},
  booktitle = {Python in {{Science Conference}}},
  author = {McKinney, Wes},
  year = {2010},
  pages = {56--61},
  address = {{Austin, Texas}},
  doi = {10.25080/Majora-92bf1922-00a},
  url = {https://conference.scipy.org/proceedings/scipy2010/mckinney.html},
  urldate = {2023-05-07},
  file = {/var/home/marty/Zotero/storage/KTLTWKAL/McKinney - 2010 - Data Structures for Statistical Computing in Pytho.pdf}
}

@inproceedings{mouraMiningEnergyawareCommits2015,
  title = {Mining Energy-Aware Commits},
  booktitle = {Proceedings of the 12th {{Working Conference}} on {{Mining Software Repositories}}},
  author = {Moura, Irineu and Pinto, Gustavo and Ebert, Felipe and Castor, Fernando},
  year = {2015},
  month = may,
  series = {{{MSR}} '15},
  pages = {56--67},
  publisher = {{IEEE Press}},
  address = {{Florence, Italy}},
  urldate = {2023-04-06},
  abstract = {Over the last years, energy consumption has become a first-class citizen in software development practice. While energy-efficient solutions on lower-level layers of the software stack are well-established, there is convincing evidence that even better results can be achieved by encouraging practitioners to participate in the process. For instance, previous work has shown that using a newer version of a concurrent data structure can yield a 2.19x energy savings when compared to the old associative implementation [75]. Nonetheless, little is known about how much software engineers are employing energy-efficient solutions in their applications and what solutions they employ for improving energy-efficiency. In this paper we present a qualitative study of "energy-aware commits". Using Github as our primary data source, we perform a thorough analysis on an initial sample of 2,189 commits and carefully curate a set of 371 energy-aware commits spread over 317 real-world non-trivial applications. Our study reveals that software developers heavily rely on low-level energy management approaches, such as frequency scaling and multiple levels of idleness. Also, our findings suggest that ill-chosen energy saving techniques can impact the correctness of an application. Yet, we found what we call "energy-aware interfaces", which are means for clients (e.g., developers or end-users) to save energy in their applications just by using a function, abstracting away the low-level implementation details.},
  isbn = {978-0-7695-5594-2}
}

@misc{Mutter2023,
  title = {Mutter},
  year = {2023},
  month = apr,
  url = {https://gitlab.gnome.org/GNOME/mutter},
  urldate = {2023-04-19},
  abstract = {A Wayland display server and X11 window manager and compositor library.},
  copyright = {GPL-2.0},
  howpublished = {GNOME},
  file = {/var/home/marty/Zotero/storage/32WQP9CM/mutter.html}
}

@misc{nakryikoBCCLibbpfConversion2020,
  title = {{{BCC}} to Libbpf Conversion Guide},
  author = {Nakryiko, Andrii},
  year = {2020},
  month = feb,
  journal = {Andrii Nakryiko's Blog},
  url = {https://nakryiko.com/posts/bcc-to-libbpf-howto-guide/#bpf-skeleton-and-bpf-app-lifecycle},
  urldate = {2023-01-03},
  abstract = {A practical guide to converting your BCC-based BPF application to libbpf and BPF CO-RE.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/P8AZGH8I/bcc-to-libbpf-howto-guide.html}
}

@misc{nakryikoBPFCORECompile2020,
  title = {{{BPF CO-RE}} ({{Compile Once}} \textendash{} {{Run Everywhere}})},
  author = {Nakryiko, Andrii},
  year = {2020},
  month = feb,
  journal = {Andrii Nakryiko's Blog},
  url = {https://nakryiko.com/posts/bpf-portability-and-co-re/},
  urldate = {2023-05-07},
  abstract = {What does it mean for a BPF application to be portable? And why it's actually hard to achieve that without BPF Compile Once \textemdash{} Run Everywhere (CO-RE)? In this post we'll see what are the challenges of writing BPF programs that can work across multiple kernel versions and how BPF CO-RE is helping to address this problem.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/2H7V6C4F/bpf-portability-and-co-re.html}
}

@misc{nakryikoJourneyLibbpf2022,
  title = {Journey to Libbpf 1.0},
  author = {Nakryiko, Andrii},
  year = {2022},
  month = aug,
  journal = {Andrii Nakryiko's Blog},
  url = {https://nakryiko.com/posts/libbpf-v1/},
  urldate = {2022-12-21},
  abstract = {Libbpf 1.0 release is here!},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/PFKMB3XF/libbpf-v1.html}
}

@misc{noceraChangesPowerProfiles2021,
  title = {Changes/{{Power Profiles Daemon}}},
  author = {Nocera, Bastien and Catanzaro, Michael and Gompa, Neal},
  year = {2021},
  month = jul,
  journal = {Fedora Project WIki},
  url = {https://fedoraproject.org/wiki/Changes/Power_Profiles_Daemon},
  urldate = {2023-04-27},
  abstract = {We will install power-profiles-daemon in Fedora Workstation and enable it by default. power-profiles-daemon allows the user to choose between optimizing for system performance or battery life.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/WP7U3TRV/Power_Profiles_Daemon.html}
}

@misc{noceraPowerprofilesdaemon2023,
  title = {Power-Profiles-Daemon},
  author = {Nocera, Bastien},
  year = {2023},
  month = apr,
  url = {https://gitlab.freedesktop.org/hadess/power-profiles-daemon},
  urldate = {2023-04-27},
  abstract = {Makes power profiles handling available over D-Bus.},
  copyright = {GPL-3.0},
  file = {/var/home/marty/Zotero/storage/CK443MNH/power-profiles-daemon.html}
}

@misc{notmoeYdotool2023,
  title = {Ydotool},
  author = {NotMoe, Reimu},
  year = {2023},
  month = apr,
  url = {https://github.com/ReimuNotMoe/ydotool},
  urldate = {2023-04-27},
  abstract = {Generic command-line automation tool (no X!)},
  copyright = {AGPL-3.0}
}

@misc{novaBoopVectors2023,
  title = {Boop {{Vectors}}},
  author = {N{\'o}va, Kris},
  year = {2023},
  month = apr,
  url = {https://github.com/krisnova/boopkit},
  urldate = {2023-04-06},
  abstract = {Linux eBPF backdoor over TCP. Spawn reverse shells, RCE, on prior privileged access. Less Honkin, More Tonkin.},
  copyright = {Apache-2.0},
  keywords = {ebpf,linux-kernel-hacking,security,tcp}
}

@misc{OffCPUAnalysis,
  title = {Off-{{CPU Analysis}}},
  url = {https://brendangregg.com/offcpuanalysis.html},
  urldate = {2022-09-21}
}

@misc{PandasPythonData,
  title = {Pandas - {{Python Data Analysis Library}}},
  url = {https://pandas.pydata.org/},
  urldate = {2023-04-17},
  file = {/var/home/marty/Zotero/storage/U9SI54YF/pandas.pydata.org.html}
}

@article{pangWhatProgrammersKnow2016,
  title = {What {{Do Programmers Know}} about {{Software Energy Consumption}}?},
  author = {Pang, Candy and Hindle, Abram and Adams, Bram and Hassan, Ahmed E.},
  year = {2016},
  month = may,
  journal = {IEEE Software},
  volume = {33},
  number = {3},
  pages = {83--89},
  issn = {0740-7459, 1937-4194},
  doi = {10.1109/MS.2015.83},
  url = {https://ieeexplore.ieee.org/document/7155416/},
  urldate = {2022-12-20}
}

@misc{PATCHRFCNetnext,
  title = {[{{PATCH RFC}} Net-next 00/14] {{BPF}} Syscall, Maps, Verifier, Samples [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/604043/},
  urldate = {2023-04-06},
  file = {/var/home/marty/Zotero/storage/5PV7Z3W5/604043.html}
}

@inproceedings{pathakWhereEnergySpent2012,
  title = {Where Is the Energy Spent inside My App?: Fine Grained Energy Accounting on Smartphones with {{Eprof}}},
  shorttitle = {Where Is the Energy Spent inside My App?},
  booktitle = {Proceedings of the 7th {{ACM}} European Conference on {{Computer Systems}} - {{EuroSys}} '12},
  author = {Pathak, Abhinav and Hu, Y. Charlie and Zhang, Ming},
  year = {2012},
  pages = {29},
  publisher = {{ACM Press}},
  address = {{Bern, Switzerland}},
  doi = {10.1145/2168836.2168841},
  url = {http://dl.acm.org/citation.cfm?doid=2168836.2168841},
  urldate = {2022-12-20},
  isbn = {978-1-4503-1223-3},
  langid = {english}
}

@misc{PerformanceAnalysisPrograms,
  title = {{Performance Analysis of Programs Based on PIN Framework}},
  journal = {Fakulta informa\v{c}n\'ich technologi\'i VUT v Brn\v{e}},
  url = {https://www.fit.vut.cz/study/thesis/23847/.cs},
  urldate = {2023-04-23},
  langid = {czech},
  file = {/var/home/marty/Zotero/storage/QNKL86LG/www.fit.vut.cz.html}
}

@misc{PERFTutorialProfiling,
  title = {{{PERF}} Tutorial: {{Profiling}} Hardware Events | {{Sand}}, Software and Sound},
  shorttitle = {{{PERF}} Tutorial},
  url = {https://sandsoftwaresound.net/perf/perf-tut-profile-hw-events/},
  urldate = {2023-04-06},
  abstract = {This article is the third part of a three part series on the PERF (linux-tools) performance measurement and profiling system for Linux. Part 1 demonstrates how},
  langid = {american}
}

@misc{PerfX86Add,
  title = {Perf/X86: Add {{Intel RAPL PMU}} Support [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/573602/},
  urldate = {2023-04-06}
}

@misc{PinDynamicBinary,
  title = {Pin - {{A Dynamic Binary Instrumentation Tool}}},
  journal = {Intel},
  url = {https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html},
  urldate = {2023-04-28},
  abstract = {Pin is a dynamic binary instrumentation framework for the IA-32, x86-64 and MIC instruction-set architectures that enables the creation of dynamic program analysis tools.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/YC5AV7GQ/pin-a-dynamic-binary-instrumentation-tool.html}
}

@inproceedings{pintoComprehensiveStudyEnergy2016,
  title = {A {{Comprehensive Study}} on the {{Energy Efficiency}} of {{Java}}'s {{Thread-Safe Collections}}},
  booktitle = {2016 {{IEEE International Conference}} on {{Software Maintenance}} and {{Evolution}} ({{ICSME}})},
  author = {Pinto, Gustavo and Liu, Kenan and Castor, Fernando and Liu, Yu David},
  year = {2016},
  month = oct,
  pages = {20--31},
  publisher = {{IEEE}},
  address = {{Raleigh, NC, USA}},
  doi = {10.1109/ICSME.2016.34},
  url = {http://ieeexplore.ieee.org/document/7816451/},
  urldate = {2022-12-20},
  isbn = {978-1-5090-3806-0}
}

@article{pintoEnergyEfficiencyNew2017,
  title = {Energy Efficiency: A New Concern for Application Software Developers},
  shorttitle = {Energy Efficiency},
  author = {Pinto, Gustavo and Castor, Fernando},
  year = {2017},
  month = nov,
  journal = {Communications of the ACM},
  volume = {60},
  number = {12},
  pages = {68--75},
  issn = {0001-0782},
  doi = {10.1145/3154384},
  url = {https://doi.org/10.1145/3154384},
  urldate = {2022-09-26},
  abstract = {Development of energy-efficient software is hindered by a lack of knowledge and a lack of tools.}
}

@inproceedings{pintoUnderstandingEnergyBehaviors2014,
  title = {Understanding Energy Behaviors of Thread Management Constructs},
  booktitle = {Proceedings of the 2014 {{ACM International Conference}} on {{Object Oriented Programming Systems Languages}} \& {{Applications}}},
  author = {Pinto, Gustavo and Castor, Fernando and Liu, Yu David},
  year = {2014},
  month = oct,
  pages = {345--360},
  publisher = {{ACM}},
  address = {{Portland Oregon USA}},
  doi = {10.1145/2660193.2660235},
  url = {https://dl.acm.org/doi/10.1145/2660193.2660235},
  urldate = {2022-12-20},
  isbn = {978-1-4503-2585-1},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/BUBQ8THR/Pinto et al. - 2014 - Understanding energy behaviors of thread managemen.pdf}
}

@misc{PMUCountersProfiling,
  title = {{{PMU}} Counters and Profiling Basics. | {{Easyperf}}},
  url = {https://easyperf.net/blog/2018/06/01/PMU-counters-and-profiling-basics},
  urldate = {2023-04-06}
}

@misc{PowerapingPowerapiPowerAPI,
  title = {Powerapi-Ng/Powerapi: {{PowerAPI}} Is a {{Python}} Framework for Building Software-Defined Power Meters.},
  url = {https://github.com/powerapi-ng/powerapi},
  urldate = {2023-04-06}
}

@misc{PowerConsumptionLinux,
  title = {Power Consumption on {{Linux}}, Measurements},
  url = {https://blog.fluxcoil.net/posts/2021/07/measuring-power-consumption-on-linux2/#where-is-software-burning-power},
  urldate = {2023-04-06}
}

@misc{ProductionReadyEBPF2022,
  title = {Production Ready {{eBPF}}, or How We Fixed the {{BSD}} Socket {{API}}},
  year = {2022},
  month = feb,
  journal = {The Cloudflare Blog},
  url = {http://blog.cloudflare.com/tubular-fixing-the-socket-api-with-ebpf/},
  urldate = {2023-04-06},
  abstract = {We are open sourcing the production tooling we've built for the sk\_lookup hook we contributed to the Linux kernel, called tubular},
  langid = {english}
}

@misc{prometheusPrometheusMonitoringSystem,
  title = {Prometheus - {{Monitoring}} System \& Time Series Database},
  author = {Prometheus},
  url = {https://prometheus.io/},
  urldate = {2023-03-24},
  abstract = {An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.},
  langid = {english}
}

@misc{rambuspressSidechannelAttacksExplained2021,
  title = {Side-Channel Attacks Explained: Everything You Need to Know},
  shorttitle = {Side-Channel Attacks Explained},
  author = {{Rambus Press}},
  year = {2021},
  month = oct,
  journal = {Rambus},
  url = {https://www.rambus.com/blogs/side-channel-attacks/},
  urldate = {2022-12-26},
  abstract = {In this blog post, we take an in-depth look at the world of side-channel attacks. We describe how side-channel attacks work and detail some of the most},
  langid = {american},
  file = {/var/home/marty/Zotero/storage/QHZEBVSU/side-channel-attacks.html}
}

@misc{RAPLRunningAverage,
  title = {{{RAPL}} ({{Running Average Power Limit}}) Driver [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/545745/},
  urldate = {2023-04-06}
}

@misc{ReadingRAPLEnergy,
  title = {Reading {{RAPL}} Energy Measurements from {{Linux}}},
  url = {https://web.eece.maine.edu/~vweaver/projects/rapl/},
  urldate = {2023-04-06}
}

@misc{RedhatperformanceTuned2023,
  title = {Redhat-Performance/Tuned},
  year = {2023},
  month = apr,
  url = {https://github.com/redhat-performance/tuned},
  urldate = {2023-04-27},
  abstract = {Tuning Profile Delivery Mechanism for Linux},
  copyright = {GPL-2.0},
  howpublished = {Red Hat Performance Engineering}
}

@misc{RePATCHMd5,
  title = {Re: [{{PATCH}}] Md5: Accepts a New --Threads Option},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2009-10/msg00253.html},
  urldate = {2023-04-06}
}

@misc{ReQustionsCPU,
  title = {Re: {{Qustions}} about {{CPU}} Usage of "Dd" Process},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2007-12/msg00056.html},
  urldate = {2023-04-06}
}

@misc{ReTakingAdvantage,
  title = {Re: {{Taking}} Advantage of {{L1}} and {{L2}} Cache in Sort},
  url = {https://lists.gnu.org/archive/html/bug-coreutils/2010-03/msg00026.html},
  urldate = {2023-04-06}
}

@misc{RFEMeasureCPU,
  title = {[{{RFE}}] {{Measure CPU}} Overhead of {{eBPF}} Programs {$\cdot$} {{Issue}} \#704 {$\cdot$} Inspektor-Gadget/Inspektor-Gadget},
  journal = {GitHub},
  url = {https://github.com/inspektor-gadget/inspektor-gadget/issues/704},
  urldate = {2023-04-06},
  abstract = {Current situation Inspektor Gadget installs eBPF programs that are going to use CPU but there are no easy way to measure the CPU usage of those programs. Kubernetes has tools to measure CPU usage o...},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/FINPJ6NT/704.html}
}

@misc{RunningAveragePower2014,
  title = {Running {{Average Power Limit}} \textendash{} {{RAPL}}},
  year = {2014},
  month = jun,
  journal = {01.org},
  url = {https://01.org/blogs/2014/running-average-power-limit-%E2%80%93-rapl},
  urldate = {2023-04-06},
  abstract = {Running Average Power Limit by Srinivas Pandruvada RAPL Evolution The thermal design power (TDP) represents the maximum amount of power the cooling system in a computer is required to dissipate. For example, for a processor with TDP of 35W, Intel guarantees the OEM that if it implements a chassis and cooling system capable of dissipating that much heat, the chip will operate as intended. This is the power budget under which the system needs to operate. But this is not the same as the maximum power the processor can consume. It is possible for the processor to consume more than the TDP power for a short period of time without it being ``thermally significant''. Using basic physics, heat will take some time to propagate, so a short burst may not necessarily violate TDP. Let's analyze how a TDP can influence performance. With a single core CPU, an application demanding performance will get full performance, as long as it is under TDP.   If one more core is added, a multi-threaded workload can demand full performance on both cores. If the CPU is using maximum frequency on both cores, this will consume more power than TDP. To avoid this, the CPU will use different maximum frequencies, depending on the number of active cores. So, out of two, if one core is more active than the other, it can use the remaining thermal budget and run at a higher frequency. This is achieved by introduction of turbo mode.  Intel\textregistered{} Turbo boost technology allows processor cores to run faster than their base frequency, if the operating condition permits. A Power Control Unit (PCU) firmware decides based on the: Number of cores active Estimated current consumption Estimated power consumption Processor temperature Once the GPU is added to the package, its power must also be considered in making this turbo boost decision. The PCU uses some internal models and counters to predict the actual and estimated power consumption. Before Sandy Bridge microarchitecture, turbo decisions are driven by models, which by nature tend to be conservative, to avoid issues in some isolated cases. Sandy Bridge added onboard power meter capability, which can be used to make better decisions, rather than decisions based purely on models. In addition, it exported these power meters and power limits used in its calculations through a set of MSRs (Machine Specific Registers) and PCIe config space. This interface is called the RAPL interface. RAPL Use Cases RAPL Power meter capability RAPL provides a set of counters providing energy and power consumption information. RAPL is not an analog power meter, but rather uses a software power model. This software power model estimates energy usage by using hardware performance counters and I/O models. Based on our measurements, they match actual power measurements [3].     RAPL Power Limiting RAPL provides a way to set power limits on processor packages and DRAM. This will allow a monitoring and control program to dynamically limit max average power, to match its expected power and cooling budget. In addition, power limits in a rack enable power budgeting across the rack distribution. By dynamically monitoring the feedback of power consumption, power limits can be reassigned based on use and workloads. Because multiple bursts of heavy workloads will eventually cause the ambient temperature to rise, reducing the rate of heat transfer, one uniform power limit can't be enforced. RAPL provides a way to set short term and longer term averaging windows for power limits. These window sizes and power limits can be adjusted dynamically. RAPL performance feedback RAPL counters capture the total time that the RAPL mechanism forced the P-state to be below the OS-requested P-state. Also, it has a counter which tracks the total time that the RAPL power limit limited the operating frequency of the processor. These counters can be used to fine tune or rebalance loads on nodes, if there are performance degradations caused by running below OS-requested P-states. RAPL Domains In RAPL, platforms are divided into domains for fine grained reports and control. A RAPL domain is a physically meaningful domain for power management. The specific RAPL domains available in a platform vary across product segments. Each RAPL domain supports: ENERGY\_STATUS for power monitoring POWER\_LIMIT and TIME\_WINDOW for controlling power PERF\_STATUS for monitoring the performance impact of the power limit RAPL\_INFO contains information on measurement units, the minimum and maximum power supported by the domain     The RAPL interface is used in multiple products at OTC. The following list summarizes some of the products and their usages: TurboStat TurboStat utility that's part of the Linux kernel tools and is now capable of displaying the wattage information. This wattage information is read using RAPL MSRs. PowerTOP PowerTOP provides estimated power consumption for various components. These estimates are based on: real power measurements, taken using a power meter, and a power model that takes into account estimated activity on that component. RAPL can help get the exact power numbers for CPUs/GPUs and DRAMs to show actual power consumption. Recent changes in PowerTOP show the actual CPU, GPU, and DRAM power consumption. RAPL driver The RAPL driver is implemented as a power cap driver. This is available in the latest Linux releases from kernel.org. Linux Thermal Daemon RAPL power limits are very effective in reducing package temperature. The Linux thermal daemon uses RAPL interface using RAPL driver to control platform thermals. References Intel\textregistered{} 64 and IA-32 Architectures Software Developer's Manual RAPL for the Romley Platform, Whitepaper Power-Management Architecture of the Intel Microarchitecture Code-Name Sandy Bridge'' (IEEE Micro, March/April 2012) Measuring Processor Power TDP vs. ACP, Whitepaper Intel\textregistered{} Xeon\textregistered{} Processor}
}

@misc{RunningFastSlow,
  title = {Running Fast and Slow: Experiments with {{BPF}} Programs Performance {$\cdot$} {{Erthalion}}'s Blog},
  url = {https://erthalion.info/2022/12/30/bpf-performance/#32-aggregated-counters},
  urldate = {2023-04-06}
}

@inproceedings{schoneEnergyEfficiencyAspects2021,
  title = {Energy {{Efficiency Aspects}} of the {{AMD Zen}} 2 {{Architecture}}},
  booktitle = {2021 {{IEEE International Conference}} on {{Cluster Computing}} ({{CLUSTER}})},
  author = {Sch{\"o}ne, Robert and Ilsche, Thomas and Bielert, Mario and Velten, Markus and Schmidl, Markus and Hackenberg, Daniel},
  year = {2021},
  month = sep,
  eprint = {2108.00808},
  primaryclass = {cs},
  pages = {562--571},
  doi = {10.1109/Cluster48925.2021.00087},
  url = {http://arxiv.org/abs/2108.00808},
  urldate = {2023-01-28},
  abstract = {In High Performance Computing, systems are evaluated based on their computational throughput. However, performance in contemporary server processors is primarily limited by power and thermal constraints. Ensuring operation within a given power envelope requires a wide range of sophisticated control mechanisms. While some of these are handled transparently by hardware control loops, others are controlled by the operating system. A lack of publicly disclosed implementation details further complicates this topic. However, understanding these mechanisms is a prerequisite for any effort to exploit the full computing capability and to minimize the energy consumption of today's server systems. This paper highlights the various energy efficiency aspects of the AMD Zen 2 microarchitecture to facilitate system understanding and optimization. Key findings include qualitative and quantitative descriptions regarding core frequency transition delays, workload-based frequency limitations, effects of I/O die P-states on memory performance as well as discussion on the built-in power monitoring capabilities and its limitations. Moreover, we present specifics and caveats of idle states, wakeup times as well as the impact of idling and inactive hardware threads and cores on the performance of active resources such as other cores.},
  archiveprefix = {arxiv},
  langid = {english},
  keywords = {Computer Science - Hardware Architecture},
  file = {/var/home/marty/Zotero/storage/92PJ7NZ9/Schöne ym. - 2021 - Energy Efficiency Aspects of the AMD Zen 2 Archite.pdf}
}

@inproceedings{schubertProfilingSoftwareEnergy2012,
  title = {Profiling {{Software}} for {{Energy Consumption}}},
  booktitle = {2012 {{IEEE International Conference}} on {{Green Computing}} and {{Communications}}},
  author = {Schubert, Simon and Kostic, Dejan and Zwaenepoel, Willy and Shin, Kang G.},
  year = {2012},
  month = nov,
  pages = {515--522},
  publisher = {{IEEE}},
  address = {{Besancon, France}},
  doi = {10.1109/GreenCom.2012.86},
  url = {http://ieeexplore.ieee.org/document/6468359/},
  urldate = {2023-01-08},
  abstract = {The amount of energy consumed by computer systems can be lowered through the use of more efficient algorithms and software. Unfortunately, software developers lack the tools to pinpoint energy-hungry sections in their code and therefore have to rely on their intuition when trying to optimize their code for energy consumption. We have developed eprof, a profiler that relates energy consumption to code locations; it attributes both the synchronously consumed energy in the CPU and the asynchronously consumed energy in peripheral devices like hard drives, network cards, etc. Eprof requires minimal changes to the kernel (tens of lines of code) and does not require special hardware to energy-profile software. Therefore eprof can be widely used to help developers make energy-aware decisions.},
  isbn = {978-1-4673-5146-1 978-0-7695-4865-4},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/FRXJALUS/Schubert ym. - 2012 - Profiling Software for Energy Consumption.pdf}
}

@misc{senyuuriEBPFBCCBetter2021,
  title = {{{eBPF}}/{{BCC}} - {{A}} Better Low-Level Instrumentation Tool on {{Android}}},
  author = {{senyuuri}},
  year = {2021},
  month = jun,
  journal = {senyuuri's blog},
  url = {https://blog.senyuuri.info/posts/2021-06-30-ebpf-bcc-android-instrumentation/},
  urldate = {2022-12-28},
  abstract = {Purpose \# eBPF is the new kernel superpower.},
  chapter = {posts},
  langid = {english}
}

@misc{SideChannelAnalysis,
  title = {Side {{Channel Analysis}} Tool | {{eShard}}},
  journal = {eShard},
  url = {https://eshard.com/side-channel},
  urldate = {2023-04-30},
  abstract = {A comprehensive Side Channel analysis solutions covering profiling and non profiling attack techniques, including deep learning.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/YFJHLYYK/side-channel.html}
}

@book{silberschatzOperatingSystemConcepts2013,
  title = {Operating System Concepts},
  author = {Silberschatz, Abraham and Galvin, Peter B. and Gagne, Greg},
  year = {2013},
  edition = {Ninth edition},
  publisher = {{Wiley}},
  address = {{Hoboken, NJ}},
  isbn = {978-1-118-06333-0},
  lccn = {QA76.76.O63 S5583 2013},
  keywords = {Operating systems (Computers)},
  file = {/var/home/marty/Zotero/storage/EGRF3JYT/Silberschatz et al. - 2013 - Operating system concepts.pdf}
}

@misc{StraceEbpfSrc,
  title = {Strace.Ebpf/Src/Ebpf at Master {$\cdot$} Vitalyvch/Strace.Ebpf},
  journal = {GitHub},
  url = {https://github.com/vitalyvch/strace.ebpf},
  urldate = {2022-12-21},
  abstract = {This repository contains a tool which traces syscalls in a fast way using eBPF linux kernel feature - strace.ebpf/src/ebpf at master {$\cdot$} vitalyvch/strace.ebpf},
  langid = {english}
}

@misc{StraceebpfSystraceMaster,
  title = {Strace-Ebpf/Systrace at Master {$\cdot$} Emfree/Strace-Ebpf},
  journal = {GitHub},
  url = {https://github.com/emfree/strace-ebpf},
  urldate = {2022-12-21},
  abstract = {Experimental strace-like tool using eBPF. Contribute to emfree/strace-ebpf development by creating an account on GitHub.},
  langid = {english}
}

@misc{StructuredParallelProgramming,
  title = {Structured {{Parallel Programming Book}} | {{Structured Parallel Programming}}},
  url = {http://parallelbook.com/article/structured-parallel-programming-book},
  urldate = {2022-09-21},
  file = {/var/home/marty/Zotero/storage/FCQGWBLR/structured-parallel-programming-book.html}
}

@misc{teamPandasdevPandasPandas2023,
  title = {Pandas-Dev/Pandas: {{Pandas}}},
  shorttitle = {Pandas-Dev/Pandas},
  author = {Team, The Pandas Development},
  year = {2023},
  month = apr,
  doi = {10.5281/ZENODO.3509134},
  url = {https://zenodo.org/record/3509134},
  urldate = {2023-05-07},
  abstract = {This is a patch release in the 2.0.x series and includes some regression and bug fixes. We recommend that all users upgrade to this version. See the full whatsnew for a list of all the changes. The release will be available on the defaults and conda-forge channels: &lt;code&gt;conda install pandas &lt;/code&gt; Or via PyPI: &lt;code&gt;python3 -m pip install --upgrade pandas &lt;/code&gt; Please report any issues with the release on the pandas issue tracker. Thanks to all the contributors who made this release possible.},
  copyright = {BSD 3-Clause "New" or "Revised" License, Open Access},
  howpublished = {Zenodo}
}

@misc{thomasGtrace2022,
  title = {Gtrace},
  author = {Thomas, Geoffrey},
  year = {2022},
  month = oct,
  url = {https://github.com/geofft/gtrace},
  urldate = {2022-12-21},
  abstract = {An implementation of strace in Rust, and a library interface}
}

@misc{ThoroughIntroductionEBPF,
  title = {A Thorough Introduction to {{eBPF}} [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/740157/},
  urldate = {2022-12-26},
  file = {/var/home/marty/Zotero/storage/LHCHUEDZ/740157.html}
}

@misc{TLPOptimizeLinux,
  title = {{{TLP}} - {{Optimize Linux Laptop Battery Life}} \textemdash{} {{TLP}} 1.5 Documentation},
  url = {https://linrunner.de/tlp/index.html},
  urldate = {2023-04-27},
  file = {/var/home/marty/Zotero/storage/UGN76K3C/index.html}
}

@misc{torvaldsTorvaldsLinux2023,
  title = {Torvalds/Linux},
  author = {Torvalds, Linus},
  year = {2023},
  month = apr,
  url = {https://github.com/torvalds/linux},
  urldate = {2023-04-20},
  abstract = {Linux kernel source tree}
}

@misc{TracingPacketJourney,
  title = {Tracing a Packet Journey Using {{Linux}} Tracepoints, Perf and {{eBPF}} | {{Yet}} Another Enthusiast Blog!},
  url = {https://blog.yadutaf.fr/2017/07/28/tracing-a-packet-journey-using-linux-tracepoints-perf-ebpf/},
  urldate = {2023-04-06}
}

@misc{UBPF2023,
  title = {{{uBPF}}},
  year = {2023},
  month = jan,
  url = {https://github.com/iovisor/ubpf},
  urldate = {2023-01-03},
  abstract = {Userspace eBPF VM},
  copyright = {Apache-2.0},
  howpublished = {IO Visor Project}
}

@misc{UnprivilegedBpfLWN,
  title = {Unprivileged Bpf() [{{LWN}}.Net]},
  url = {https://lwn.net/Articles/660331/},
  urldate = {2022-12-28},
  file = {/var/home/marty/Zotero/storage/7DK7P76F/660331.html}
}

@misc{venPowerTOP2023,
  title = {{{PowerTOP}}},
  author = {van de Ven, Arjan},
  year = {2023},
  month = apr,
  url = {https://github.com/fenrus75/powertop},
  urldate = {2023-04-20},
  abstract = {The Linux PowerTOP tool  -- please post patches to the mailing list instead of using github pull requests},
  copyright = {GPL-2.0}
}

@article{virtanenSciPyFundamentalAlgorithms2020,
  title = {{{SciPy}} 1.0: Fundamental Algorithms for Scientific Computing in {{Python}}},
  shorttitle = {{{SciPy}} 1.0},
  author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and Haberland, Matt and Reddy, Tyler and Cournapeau, David and Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and Bright, Jonathan and {van der Walt}, St{\'e}fan J. and Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and Kern, Robert and Larson, Eric and Carey, C J and Polat, {\.I}lhan and Feng, Yu and Moore, Eric W. and VanderPlas, Jake and Laxalde, Denis and Perktold, Josef and Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and Harris, Charles R. and Archibald, Anne M. and Ribeiro, Ant{\^o}nio H. and Pedregosa, Fabian and {van Mulbregt}, Paul and {SciPy 1.0 Contributors} and Vijaykumar, Aditya and Bardelli, Alessandro Pietro and Rothberg, Alex and Hilboll, Andreas and Kloeckner, Andreas and Scopatz, Anthony and Lee, Antony and Rokem, Ariel and Woods, C. Nathan and Fulton, Chad and Masson, Charles and H{\"a}ggstr{\"o}m, Christian and Fitzgerald, Clark and Nicholson, David A. and Hagen, David R. and Pasechnik, Dmitrii V. and Olivetti, Emanuele and Martin, Eric and Wieser, Eric and Silva, Fabrice and Lenders, Felix and Wilhelm, Florian and Young, G. and Price, Gavin A. and Ingold, Gert-Ludwig and Allen, Gregory E. and Lee, Gregory R. and Audren, Herv{\'e} and Probst, Irvin and Dietrich, J{\"o}rg P. and Silterra, Jacob and Webber, James T and Slavi{\v c}, Janko and Nothman, Joel and Buchner, Johannes and Kulick, Johannes and Sch{\"o}nberger, Johannes L. and {de Miranda Cardoso}, Jos{\'e} Vin{\'i}cius and Reimer, Joscha and Harrington, Joseph and Rodr{\'i}guez, Juan Luis Cano and {Nunez-Iglesias}, Juan and Kuczynski, Justin and Tritz, Kevin and Thoma, Martin and Newville, Matthew and K{\"u}mmerer, Matthias and Bolingbroke, Maximilian and Tartre, Michael and Pak, Mikhail and Smith, Nathaniel J. and Nowaczyk, Nikolai and Shebanov, Nikolay and Pavlyk, Oleksandr and Brodtkorb, Per A. and Lee, Perry and McGibbon, Robert T. and Feldbauer, Roman and Lewis, Sam and Tygier, Sam and Sievert, Scott and Vigna, Sebastiano and Peterson, Stefan and More, Surhud and Pudlik, Tadeusz and Oshima, Takuya and Pingel, Thomas J. and Robitaille, Thomas P. and Spura, Thomas and Jones, Thouis R. and Cera, Tim and Leslie, Tim and Zito, Tiziano and Krauss, Tom and Upadhyay, Utkarsh and Halchenko, Yaroslav O. and {V{\'a}zquez-Baeza}, Yoshiki},
  year = {2020},
  month = mar,
  journal = {Nature Methods},
  volume = {17},
  number = {3},
  pages = {261--272},
  issn = {1548-7091, 1548-7105},
  doi = {10.1038/s41592-019-0686-2},
  url = {http://www.nature.com/articles/s41592-019-0686-2},
  urldate = {2023-04-17},
  abstract = {Abstract             SciPy is an open-source scientific computing library for the Python programming language. Since its initial release in 2001, SciPy has become a de facto standard for leveraging scientific algorithms in Python, with over 600 unique code contributors, thousands of dependent packages, over 100,000 dependent repositories and millions of downloads per year. In this work, we provide an overview of the capabilities and development practices of SciPy 1.0 and highlight some recent technical developments.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/CAHSGKVV/Virtanen ym. - 2020 - SciPy 1.0 fundamental algorithms for scientific c.pdf}
}

@misc{Wachy2022,
  title = {Wachy},
  year = {2022},
  month = dec,
  url = {https://github.com/rubrikinc/wachy},
  urldate = {2022-12-26},
  abstract = {A UI for eBPF-based performance debugging},
  howpublished = {Rubrikinc},
  keywords = {ebpf,tracing}
}

@misc{WachyNewApproach,
  title = {Wachy - {{A New Approach}} to {{Performance Debugging}}},
  url = {https://rubrikinc.github.io/wachy/},
  urldate = {2022-12-26}
}

@inproceedings{wangHertzbleedTurningPower2022,
  title = {Hertzbleed: {{Turning Power Side-Channel Attacks Into Remote Timing Attacks}} on X86},
  booktitle = {Proceedings of the {{USENIX Security Symposium}} ({{USENIX}})},
  author = {Wang, Yingchen and Paccagnella, Riccardo and He, Elizabeth and Shacham, Hovav and Fletcher, Christopher W. and Kohlbrenner, David},
  year = {2022},
  abstract = {Power side-channel attacks exploit data-dependent varia- tions in a CPU's power consumption to leak secrets. In this paper, we show that on modern Intel (and AMD) x86 CPUs, power side-channel attacks can be turned into timing attacks that can be mounted without access to any power measure- ment interface. Our discovery is enabled by dynamic voltage and frequency scaling (DVFS). We find that, under certain circumstances, DVFS-induced variations in CPU frequency depend on the current power consumption (and hence, data) at the granularity of milliseconds. Making matters worse, these variations can be observed by a remote attacker, since frequency differences translate to wall time differences! The frequency side channel is theoretically more powerful than the software side channels considered in cryptographic engineering practice today, but it is difficult to exploit because it has a coarse granularity. Yet, we show that this new channel is a real threat to the security of cryptographic software. First, we reverse engineer the dependency between data, power, and frequency on a modern x86 CPU\textemdash finding, among other things, that differences as seemingly minute as a set bit's position in a word can be distinguished through frequency changes. Second, we describe a novel chosen-ciphertext at- tack against (constant-time implementations of) SIKE, a post- quantum key encapsulation mechanism, that amplifies a sin- gle key-bit guess into many thousands of high- or low-power operations, allowing full key extraction via remote timing.},
  file = {/var/home/marty/Zotero/storage/MJ7P6G9Z/Wang ym. - 2022 - Hertzbleed Turning Power Side-Channel Attacks Int.pdf}
}

@article{waskomSeabornStatisticalData2021,
  title = {Seaborn: Statistical Data Visualization},
  shorttitle = {Seaborn},
  author = {Waskom, Michael},
  year = {2021},
  month = apr,
  journal = {Journal of Open Source Software},
  volume = {6},
  number = {60},
  pages = {3021},
  issn = {2475-9066},
  doi = {10.21105/joss.03021},
  url = {https://joss.theoj.org/papers/10.21105/joss.03021},
  urldate = {2023-04-17},
  file = {/var/home/marty/Zotero/storage/A72V5QTQ/Waskom - 2021 - seaborn statistical data visualization.pdf}
}

@misc{weaverLinuxSupportPower,
  title = {Linux Support for {{Power Measurement Interfaces}}},
  author = {Weaver, Vince},
  journal = {Vince Weaver},
  url = {https://web.eece.maine.edu/~vweaver/projects/rapl/rapl_support.html},
  urldate = {2023-04-07},
  abstract = {This document describes Linux support for various power measurement interfaces, although it is primarily looking at ones that can be accessed via the "perf" tool, i.e. primarily Intel RAPL and AMD APM.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/P3PZ5FF8/rapl_support.html}
}

@misc{WhatEBPFIntroduction,
  title = {What Is {{eBPF}}? {{An Introduction}} and {{Deep Dive}} into the {{eBPF Technology}}},
  shorttitle = {What Is {{eBPF}}?},
  journal = {eBPF},
  url = {https://www.ebpf.io/what-is-ebpf},
  urldate = {2022-12-26},
  abstract = {A detailed step by step introduction to the eBPF technology with lots of references for further reading.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/SWGQWXDZ/what-is-ebpf.html}
}

@misc{WriteYourselfStrace,
  title = {Write Yourself an Strace in 70 Lines of Code - {{Made}} of {{Bugs}}},
  url = {https://blog.nelhage.com/2010/08/write-yourself-an-strace-in-70-lines-of-code/},
  urldate = {2022-12-21}
}

@article{yanUsingPerfArm,
  title = {Using Perf {{On Arm}} Platforms},
  author = {Yan, Leo and Thompson, Daniel and Support, Linaro},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/Y9UDRYRS/Yan ym. - Using perf On Arm platforms.pdf}
}

@misc{yingchenwangHertzbleed2023,
  title = {Hertzbleed},
  author = {{Yingchen Wang}},
  year = {2023},
  month = apr,
  url = {https://github.com/FPSG-UIUC/hertzbleed},
  urldate = {2023-04-30},
  copyright = {NCSA},
  howpublished = {FPSG-UIUC}
}

@article{zhangQuantitativeEvaluationRAPL,
  title = {A {{Quantitative Evaluation}} of the {{RAPL Power Control System}}},
  author = {Zhang, Huazhe and Hoffmann, Henry},
  abstract = {We evaluate Intel's RAPL power control system, which allows users to set a power limit and then tunes processor behavior to respect that limit. We evaluate RAPL by setting power limits and running a number of standard benchmarks. We quantify RAPL along five metrics: stability, accuracy, settling time, overshoot, and efficiency. The first four are standard measures for evaluating control systems. The last recognizes that any power control approach should deliver the highest possible performance achievable within the power limit. Our results show that RAPL performs well on the four standard metrics, but some benchmarks fail to achieve maximum performance. At high power limits, the average performance is within 90\% of optimal. At middle power limits, it is 86\% of optimal. At low power limits, the average performance is less than 65\% of optimal.},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/X6IT9LFZ/Zhang ja Hoffmann - A Quantitative Evaluation of the RAPL Power Contro.pdf}
}

@inproceedings{zhangRedAlertPower2021,
  title = {Red {{Alert}} for {{Power Leakage}}: {{Exploiting Intel RAPL-Induced Side Channels}}},
  shorttitle = {Red {{Alert}} for {{Power Leakage}}},
  booktitle = {Proceedings of the 2021 {{ACM Asia Conference}} on {{Computer}} and {{Communications Security}}},
  author = {Zhang, Zhenkai and Liang, Sisheng and Yao, Fan and Gao, Xing},
  year = {2021},
  month = may,
  pages = {162--175},
  publisher = {{ACM}},
  address = {{Virtual Event Hong Kong}},
  doi = {10.1145/3433210.3437517},
  url = {https://dl.acm.org/doi/10.1145/3433210.3437517},
  urldate = {2023-03-25},
  abstract = {RAPL (Running Average Power Limit) is a hardware feature introduced by Intel to facilitate power management. Even though RAPL and its supporting software interfaces can benefit power management significantly, they are unfortunately designed without taking certain security issues into careful consideration. In this paper, we demonstrate that information leaked through RAPL-induced side channels can be exploited to mount realistic attacks. Specifically, we have constructed a new RAPL-based covert channel using a single AVX instruction, which can exfiltrate data across different boundaries (e.g., those established by containers in software or even CPUs in hardware); and, we have investigated the first RAPL-based website fingerprinting technique that can identify visited webpages with a high accuracy (up to 99\% in the case of the regular network using a browser like Chrome or Safari, and up to 81\% in the case of the anonymity network using Tor). These two studies form a preliminary examination into RAPL-imposed security implications. In addition, we discuss some possible countermeasures.},
  isbn = {978-1-4503-8287-8},
  langid = {english},
  file = {/var/home/marty/Zotero/storage/TJRIFN5U/Zhang ym. - 2021 - Red Alert for Power Leakage Exploiting Intel RAPL.pdf}
}

@misc{zotero-251,
  url = {https://www.kernel.org/doc/Documentation/networking/filter.txt},
  urldate = {2023-03-25}
}
