
Joularjx เป็นตัวแทนที่ใช้ Java สำหรับการตรวจสอบพลังงานซอฟต์แวร์ที่ระดับซอร์สโค้ด
เอกสารโดยละเอียด (รวมถึงคู่มือผู้ใช้และคู่มืออ้างอิง) มีอยู่ที่: https://joular.github.io/joularjx/
ในการสร้าง joularjx คุณต้องใช้ Java 11+ และ Maven จากนั้นก็สร้าง:
mvn clean install -DskipTests
หรือคุณสามารถใช้ wrapper maven ที่จัดส่งกับโครงการด้วยคำสั่ง:
Linux: ./mvnw clean install -DskipTests
Windows: ./mvnw.cmd clean install -DskipTests
Joularjx ขึ้นอยู่กับซอฟต์แวร์หรือแพ็คเกจต่อไปนี้เพื่อรับการอ่านพลังงาน:
config.propertiespowermetrics เครื่องมือที่รวมกับ macOS ซึ่งต้องใช้การทำงานกับ sudo Access ขอแนะนำให้อนุญาตให้ผู้ใช้ปัจจุบันเรียกใช้ /usr/bin/powermetrics โดยไม่ต้องใช้รหัสผ่านโดยทำการปรับเปลี่ยนไฟล์ sudoers ที่เหมาะสมนอกจากนี้เรายังสนับสนุน Asus Tinker Board
Joularjx เป็นตัวแทน Java ที่คุณสามารถเชื่อมต่อกับเครื่องเสมือน Java เมื่อเริ่มคลาสหลักของโปรแกรม Java:
java -javaagent:joularjx-$version.jar YourProgramMainClass
หากโปรแกรมของคุณเป็นไฟล์ jar ให้เรียกใช้ตามปกติในขณะที่เพิ่ม joularjx:
java -javaagent:joularjx-$version.jar -jar yourProgram.jar
Joularjx จะสร้างไฟล์ CSV หลายไฟล์ตามการตั้งค่าการกำหนดค่า (ใน config.properties ) และจะสร้างไฟล์เหล่านี้ในโฟลเดอร์ joularjx-results
ไฟล์ที่สร้างขึ้นจะมีอยู่ภายใต้โครงสร้างโฟลเดอร์ต่อไปนี้:
filter-method-names ) Joularjx สามารถกำหนดค่าได้โดยการแก้ไขไฟล์ config.properties :
filter-method-names : รายการสตริงที่จะใช้ในการกรองวิธีการตรวจสอบ (ดูไฟล์ที่สร้างขึ้นด้านล่างสำหรับคำอธิบาย)save-runtime-data : เขียนวิธีการใช้งานการใช้พลังงานในไฟล์ CSVoverwrite-runtime-data : เขียนทับไฟล์ข้อมูลพลังงานรันไทม์หรือหากตั้งค่าเป็นเท็จมันจะเขียนไฟล์ใหม่สำหรับแต่ละรอบการตรวจสอบlogger-level : ตั้งค่าระดับข้อมูล (โดย Logger) ที่กำหนดโดย Joularjx ในเทอร์มินัล (ค่าที่อนุญาต: ปิด, ข้อมูล, คำเตือน, รุนแรง)powermonitor-path : เส้นทางเต็มไปยังโปรแกรม Power Monitor for Windows (สำหรับ Windows เท่านั้น)track-consumption-evolution : สร้างไฟล์ CSV สำหรับแต่ละวิธีที่มีรายละเอียดของการบริโภคของวิธีการในช่วงเวลาหนึ่ง ค่าการบริโภคแต่ละครั้งจะถูกแมปกับการประทับเวลา UNIXhide-agent-consumption : หากตั้งค่าเป็นจริงการใช้พลังงานของเธรดตัวแทนจะไม่ถูกรายงานenable-call-trees-consumption : วิธีการคำนวณเรียกการใช้พลังงานของต้นไม้ ไฟล์ CSV จะถูกสร้างขึ้นในตอนท้ายของการดำเนินการของตัวแทนโดยเชื่อมโยงกับแผนผังการโทรแต่ละครั้งคือการใช้พลังงานทั้งหมดsave-call-trees-runtime-data : เขียน Runtime Call Trees การใช้พลังงานในไฟล์ CSV สำหรับแต่ละรอบการตรวจสอบ (1 วินาที) ไฟล์ CSV ใหม่จะถูกสร้างขึ้นซึ่งมีการใช้พลังงานรันไทม์ของต้นไม้สาย ไฟล์ที่สร้างขึ้นจะรวมถึงการประทับเวลาในชื่อของพวกเขาoverwrite-call-trees-runtime-data : เขียนทับไฟล์ข้อมูลการเรียกรันไทม์ของรันไทม์หรือหากตั้งค่าเป็นเท็จมันจะเขียนไฟล์ใหม่สำหรับแต่ละรอบการตรวจสอบapplication-server : จัดการแอปพลิเคชันเซิร์ฟเวอร์และเฟรมเวิร์กอย่างถูกต้อง (Boot Sprig, Tomcat ฯลฯ ) ตั้ง true เมื่อทำงานบนเซิร์ฟเวอร์แอปพลิเคชัน หากเป็นเท็จลูปการตรวจสอบจะตรวจสอบว่า JVM ถูกทำลายหรือไม่ดังนั้นการปิด joularjx เมื่อแอปพลิเคชันสิ้นสุดลง (ในแอปพลิเคชัน Java ปกติ) หากเป็นจริง Joularjx จะดำเนินการตรวจสอบอย่างถูกต้องอย่างถูกต้องเนื่องจาก JVM ไม่ได้ถูกทำลายในแอปพลิเคชันเซิร์ฟเวอร์vm-power-path : เส้นทางสำหรับการใช้พลังงานของเครื่องเสมือน ภายในเครื่องเสมือนระบุไฟล์ที่มีการใช้พลังงานของ VM (ซึ่งมักจะเป็นไฟล์ในโฮสต์ที่แชร์กับแขก)vm-power-format : รูปแบบพลังงานของไฟล์ Power VM ที่ใช้ร่วมกัน ขณะนี้เรารองรับสองรูปแบบ: watts (ไฟล์ที่มีค่าลอยหนึ่งค่าซึ่งคือการใช้พลังงานของ VM) และ powerjoular (ไฟล์ CSV ที่สร้างโดย PowerJoular ในโฮสต์ที่มี 3 คอลัมน์: Timestamp, CPU การใช้พลังงาน CPU ของ VM และ CPU Power ของ VM) คุณสามารถติดตั้งแพ็คเกจ JAR (และ powermonitor.exe บน Windows) ไม่ว่าคุณจะต้องการและเรียกมันใน javaagent ด้วยเส้นทางเต็มรูปแบบ อย่างไรก็ตาม config.properties จะต้องถูกคัดลอกไปยังโฟลเดอร์เดียวกับที่คุณเรียกใช้คำสั่ง Java หรือตำแหน่งของมันจะต้องตั้งค่าด้วย -Djoularjx.config=/path/to/config.properties เมื่อเรียกใช้โปรแกรมของคุณ
ในเครื่องเสมือน Joularjx ต้องการสองขั้นตอน:
สำหรับข้อมูลพลังงานแบบเรียลไทม์หรือพลังงานทั้งหมดที่ออกจากโปรแกรม Joularjx สร้างไฟล์ CSV สองไฟล์:
config.properties ) ข้อมูลนี้ไม่ได้เป็นเพียงชุดย่อยของไฟล์ข้อมูลแรก แต่เป็นการคำนวณใหม่โดย Joularjx เพื่อให้ข้อมูลที่ถูกต้อง: วิธีการที่เริ่มต้นด้วยคำหลักที่กรองจะได้รับการจัดสรรพลังงานหรือพลังงานที่ใช้โดยวิธี JDK ที่เรียก ตัวอย่างเช่นถ้า Package1.MethodA เรียก java.io.PrintStream.println เพื่อพิมพ์ข้อความบางส่วนไปยังเทอร์มินัลเราจะคำนวณ:
println แยกออกจาก MethodA การใช้พลังงานหลังจะไม่รวมถึงการใช้งานโดย printlnPackage1 การใช้พลังงานของ println จะถูกเพิ่มลงในการใช้พลังงาน MethodA และไฟล์จะให้พลังงานหรือพลังงานของวิธีการ Package1 เท่านั้นเราจัดการทำสิ่งนี้โดยการวิเคราะห์ stacktrace ของเธรดที่ทำงานทั้งหมดบนรันไทม์
Joularjx Reader เป็น GUI ในการประมวลผลวิเคราะห์และแสดงภาพไฟล์พลังงานที่สร้างขึ้น joularjx มีให้บริการที่พื้นที่เก็บข้อมูลของตัวเองที่นี่
หากต้องการอ้างอิงงานของเราในรายงานการวิจัยโปรดอ้างถึงบทความของเราในการประชุมนานาชาติครั้งที่ 18 เกี่ยวกับสภาพแวดล้อมอัจฉริยะ (IE2022)
@inproceedings{noureddine-ie-2022,
title = {PowerJoular and JoularJX: Multi-Platform Software Power Monitoring Tools},
author = {Noureddine, Adel},
booktitle = {18th International Conference on Intelligent Environments (IE2022)},
address = {Biarritz, France},
year = {2022},
month = {Jun},
keywords = {Power Monitoring; Measurement; Power Consumption; Energy Analysis}
}
Joularjx ได้รับใบอนุญาตภายใต้ใบอนุญาต GNU GPL 3 เท่านั้น (GPL-3.0-only)
ลิขสิทธิ์ (c) 2021-2024, Adel Noureddine, Université de Pau และ Des Pays L'Adour สงวนลิขสิทธิ์ โปรแกรมนี้และวัสดุประกอบมีให้ภายใต้เงื่อนไขของใบอนุญาตสาธารณะ GNU ทั่วไป v3.0 เท่านั้น (GPL-3.0-only) ซึ่งมาพร้อมกับการกระจายนี้และมีอยู่ที่: https://www.gnu.org/licenses/gpl-3.0.en.html.html.html.html.html
ผู้แต่ง: Adel Noureddine