43 lines
849 B
JavaScript
43 lines
849 B
JavaScript
class GPUService extends Service {
|
|
static {
|
|
Service.register(
|
|
this,
|
|
{},
|
|
{ "current-usage": ["float", "r"], temperature: ["float", "r"] },
|
|
);
|
|
}
|
|
|
|
#currentUsage = 0;
|
|
#temperature = 0;
|
|
|
|
get current_usage() {
|
|
return this.#currentUsage;
|
|
}
|
|
|
|
get temperature() {
|
|
return this.#temperature;
|
|
}
|
|
|
|
constructor() {
|
|
super();
|
|
this.#update();
|
|
const interval = setInterval(() => {
|
|
this.#update();
|
|
}, 2000);
|
|
}
|
|
|
|
#update() {
|
|
this.#currentUsage = Utils.exec(
|
|
"sh -c 'cat /sys/class/drm/card?/device/gpu_busy_percent'",
|
|
);
|
|
this.#temperature =
|
|
Utils.exec(
|
|
"sh -c 'cat /sys/class/drm/card?/device/hwmon/hwmon?/temp1_input'",
|
|
) / 1000;
|
|
this.changed("current-usage");
|
|
this.changed("temperature");
|
|
}
|
|
}
|
|
|
|
const gpu = new GPUService();
|
|
export default gpu;
|