sustainable-computing-io / kepler

Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe performance counters and other system stats, use ML models to estimate workload energy consumption based on these stats, and exports them as Prometheus metrics
https://sustainable-computing.io
Apache License 2.0
1.18k stars 184 forks source link

ARM support #482

Closed rootfs closed 1 year ago

rootfs commented 1 year ago

Some ARM platforms provide power readings, such as Ampere, and Tegra

rootfs commented 1 year ago

Discussion: 1) Should Apple Silicon be supported? Does it expose power reading (tools available) ? Can kepler be started natively on Mac? 2) Use case: ML

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

odidev commented 1 year ago

Hi Team,

I have tried deploying Kepler over the arm64 platform on Minikube using Helm. But the Kepler pod fails because the Kepler image is not available for the arm64 platform.

I successfully built the docker images for arm64 platforms. With this docker image pods are successfully running.

subham@ip-xyz:~$ kubectl get pods -n kepler
NAME           READY   STATUS    RESTARTS        AGE
kepler-s7jjb   1/1     Running   5 (4h29m ago)   4h31m

I have also confirmed this by taking metric data output using curl localhost:9102/metrics command:

Output : - kepler_arm_output.txt

I will share the changes if you plan to release the arm64 docker image.

odidev commented 1 year ago

Hi Team,

Adding a gentle reminder to the above comment.

rootfs commented 1 year ago

what is your arm platform spec @odidev

odidev commented 1 year ago

Hi @rootfs

I have used an AWS ec2 instance. Below are the platform specifications: -

rootfs commented 1 year ago

Unfortunately, Graviton doesn't publish any power consumption API spec. Kepler cannot get power reading from this architecture.

odidev commented 1 year ago

I have tried to run Kepler on an Ampere-based processor on GCP. Below are the platform specifications: -

Please let me know the supported arm64 configurations for Kepler, where I can get the power consumption data.

rootfs commented 1 year ago

There are two power models in Kepler: on bare metal machines, Kepler reads from the HW sensors to get the power. Bare metal Ampere is supported. On VMs (such as the GCP instance you are using), Kepler uses ML models to estimate power. At the moment, we have not trained Ampere based power models yet. Existing models are all x86 based.

odidev commented 1 year ago

Is their any plan to release the Kepler Arm64 docker images which supports the graviton2 or Ampere based processors for VM based deployment?

rootfs commented 1 year ago

yes, Ampere is still being worked on, VM support is planned for 0.6 release

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Maarham commented 5 months ago

Hi! I wanted to follow up on this thread. Has there been any development in Kepler running on AWS Graviton3? I see ARM64 compatibility in the MakeFile within the Github. Was wondering if some developments have been made. Thanks!