This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

IPMI Energy Agent

Hi,

is there an energy agent version for the ARM aarch64 architecture?  This site 

https://developer.arm.com/products/software-development-tools/hpc/documentation/ipmi-energy-agent

only provides RPMs for the  x86_64  architecture.

thanks

Parents
  • I figured out how to install the agent

    # systemctl status ipmi-energy-agent.service
    ● ipmi-energy-agent.service - Arm IPMI Energy Agent
       Loaded: loaded (/usr/lib/systemd/system/ipmi-energy-agent.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2019-02-13 15:26:36 CST; 19h ago
         Docs: http://www.allinea.com/user-guide/forge/userguide.html
      Process: 38073 ExecStartPre=/bin/mkdir -m 0755 -p /var/spool/ipmi-energy-agent (code=exited, status=0/SUCCESS)
     Main PID: 38076 (ipmi-energy-age)
       CGroup: /system.slice/ipmi-energy-agent.service
               └─38076 /usr/sbin/ipmi-energy-agent smi 0 NodeDCpow...
    
    Feb 13 15:26:36 cn4002 systemd[1]: Starting Arm IPMI Energy Ag...
    Feb 13 15:26:36 cn4002 systemd[1]: Started Arm IPMI Energy Agent.
    Hint: Some lines were ellipsized, use -l to show in full.
    

    I'm using Centos7 on aarch64. I installed the following rpm packages: 

    • popt popt-devel
    • OpenIPMI-modalias-2.0.23-2.el7.aarch64 OpenIPMI-2.0.23-2.el7.aarch64 OpenIPMI-devel-2.0.23-2.el7.aarch64 ipmitool-1.8.18-7.el7.aarch64 OpenIPMI-libs-2.0.23-2.el7.aarch64

    • ncurses-devel ncurses ncurses-lib

    Then I updated the makefile to point to the location of the libraries and header files

    srcdir?=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
    exec_prefix?=$(prefix)
    sbindir?=$(exec_prefix)/sbin
    sysconfdir?=$(prefix)/etc
    libdir?=$(prefix)/lib
    
    TARGET=ipmi-energy-agent
    VERSION=$(shell grep IPMI_ENERGY_AGENT_VERSION src/version.h | sed 's/[^"]*"\([0-9]*\.[0-9]*\).*/\1/')
    
    TARBALL=$(TARGET)-$(VERSION).tar.bz2
    
    DEPS_ROOT=$(srcdir)/deps
    OPENIPMI_VERSION=2.0.21
    OPENIPMI_PACKAGE=OpenIPMI-$(OPENIPMI_VERSION)
    OPENIPMI_ROOT=$(DEPS_ROOT)/$(OPENIPMI_PACKAGE)
    OPENIPMI_LIBDIR=$(OPENIPMI_ROOT)/lib/.libs
    OPENIPMI_UTILS_LIBDIR=$(OPENIPMI_ROOT)/utils/.libs
    OPENIPMI_UNIX_LIBDIR=$(OPENIPMI_ROOT)/unix/.libs
    OPENIPMI_TARGET=$(OPENIPMI_LIBDIR)/libOpenIPMI.a
    
    POPT_VERSION=1.16
    POPT_PACKAGE=popt-$(POPT_VERSION)
    POPT_ROOT=$(DEPS_ROOT)/$(POPT_PACKAGE)
    POPT_LIBDIR=$(POPT_ROOT)/.libs
    POPT_TARGET=$(POPT_LIBDIR)/libpopt.a
    
    ALLINEA_FORGE_PATH?=/opt/arm/forge
    
    CFLAGS ?= -g -O2
    
    SOURCES=counters.c ipmi.c main.c simulate.c
    HEADERS=counters.h ipmi.h main.h options.h simulate.h
    
    TESTS=map-test
    
    VPATH=src test
    
    all: $(TARGET)
    
    $(TARGET): $(SOURCES) $(HEADERS) 
    	$(CC) $(filter %.c,$^) $(CFLAGS) -o $(TARGET) -lrt -I/usr/include/OpenIPMI -L/usr/lib64/ -lOpenIPMI  -lOpenIPMIutils -L/usr/lib64/pkgconfig -lOpenIPMIposix -lm
    
    $(filter-out map-test,$(TESTS)): %: %.c
    	$(CC) $< $(CFLAGS) -o $@
    
    map-test: map-test.c map-metric-plugin-api.c $(ALLINEA_FORGE_PATH)/map/metrics/lib-system-energy.so $(ALLINEA_FORGE_PATH)/lib/64/libmap-sampler.so
    	$(CC) $^ $(CFLAGS) -o $@ -I$(ALLINEA_FORGE_PATH)/map/metrics/include -L$(ALLINEA_FORGE_PATH)/map/metrics -l-system-energy -Wl,-rpath -Wl,$(ALLINEA_FORGE_PATH)/map/metrics -Wl,-rpath -Wl,$(ALLINEA_FORGE_PATH)/lib/64 -lrt
    
    .PHONY: install uninstall clean tar rpm deb test
    
    install:
    	install -d $(DESTDIR)$(sbindir)/
    	install $(TARGET) $(DESTDIR)$(sbindir)/
    	install -d $(DESTDIR)$(libdir)/systemd/system/
    	install -m 0644 lib/systemd/system/ipmi-energy-agent.service $(DESTDIR)$(libdir)/systemd/system/
    	install -d $(DESTDIR)$(sysconfdir)/init.d/
    	install -m 0644 etc/init.d/ipmi-energy-agent $(DESTDIR)$(sysconfdir)/init.d/
    	install -d $(DESTDIR)$(sysconfdir)/default/
    	install -m 0644 etc/default/ipmi-energy-agent $(DESTDIR)$(sysconfdir)/default/
    
    uninstall:
    	rm -f $(DESTDIR)$(sbindir)/$(TARGET)
    	rm -f $(DESTDIR)$(libdir)/systemd/system/ipmi-energy-agent.service
    	rm -f $(DESTDIR)$(etcdir)/init.d/ipmi-energy-agent
    
    clean:
    	rm -f $(TARGET) $(TESTS)
    	rm -rf $(OPENIPMI_ROOT) $(POPT_ROOT)
    	rm -rf debian/ipmi-energy-agent
    
    tar: clean
    	cd .. && tar -cjf $(TARBALL) ipmi-energy-agent
    
    rpm: tar
    	topdir=$$(mktemp -d); \
    	mkdir $$topdir/{BUILD,RPMS,SOURCES,SPECS,SRPMS,BUILDROOT}; \
    	rpmbuild -ta --define="_topdir $$topdir" --define="_rpmdir .." --buildroot="$$topdir/BUILDROOT" ../$(TARBALL); \
    	ret=$$? \
    	rm -rf $$topdir \
    	exit $$ret
    
    deb: clean
    	debuild -i -us -uc -b
    
    test: $(TARGET) $(TESTS)
    	for test in $(filter-out map-test,$(TESTS)); do ./$$test; done
    	PL_FOLDER=$$(mktemp -d); PL_FOLDER="$$PL_FOLDER" ./map-test; ret=$$?; rm -r "$$PL_FOLDER"; exit $$ret
    

    Now i need to figure out how to use the arm tools to figure out usage based on these parameters. Suggestions? thanks

    #     ipmitool sdr | grep 'Watts'
    InputACpower     | 560 Watts         | ok
    TotalDCpower     | 528 Watts         | ok
    NodeDCpower      | 224 Watts         | ok
    #

Reply
  • I figured out how to install the agent

    # systemctl status ipmi-energy-agent.service
    ● ipmi-energy-agent.service - Arm IPMI Energy Agent
       Loaded: loaded (/usr/lib/systemd/system/ipmi-energy-agent.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2019-02-13 15:26:36 CST; 19h ago
         Docs: http://www.allinea.com/user-guide/forge/userguide.html
      Process: 38073 ExecStartPre=/bin/mkdir -m 0755 -p /var/spool/ipmi-energy-agent (code=exited, status=0/SUCCESS)
     Main PID: 38076 (ipmi-energy-age)
       CGroup: /system.slice/ipmi-energy-agent.service
               └─38076 /usr/sbin/ipmi-energy-agent smi 0 NodeDCpow...
    
    Feb 13 15:26:36 cn4002 systemd[1]: Starting Arm IPMI Energy Ag...
    Feb 13 15:26:36 cn4002 systemd[1]: Started Arm IPMI Energy Agent.
    Hint: Some lines were ellipsized, use -l to show in full.
    

    I'm using Centos7 on aarch64. I installed the following rpm packages: 

    • popt popt-devel
    • OpenIPMI-modalias-2.0.23-2.el7.aarch64 OpenIPMI-2.0.23-2.el7.aarch64 OpenIPMI-devel-2.0.23-2.el7.aarch64 ipmitool-1.8.18-7.el7.aarch64 OpenIPMI-libs-2.0.23-2.el7.aarch64

    • ncurses-devel ncurses ncurses-lib

    Then I updated the makefile to point to the location of the libraries and header files

    srcdir?=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
    exec_prefix?=$(prefix)
    sbindir?=$(exec_prefix)/sbin
    sysconfdir?=$(prefix)/etc
    libdir?=$(prefix)/lib
    
    TARGET=ipmi-energy-agent
    VERSION=$(shell grep IPMI_ENERGY_AGENT_VERSION src/version.h | sed 's/[^"]*"\([0-9]*\.[0-9]*\).*/\1/')
    
    TARBALL=$(TARGET)-$(VERSION).tar.bz2
    
    DEPS_ROOT=$(srcdir)/deps
    OPENIPMI_VERSION=2.0.21
    OPENIPMI_PACKAGE=OpenIPMI-$(OPENIPMI_VERSION)
    OPENIPMI_ROOT=$(DEPS_ROOT)/$(OPENIPMI_PACKAGE)
    OPENIPMI_LIBDIR=$(OPENIPMI_ROOT)/lib/.libs
    OPENIPMI_UTILS_LIBDIR=$(OPENIPMI_ROOT)/utils/.libs
    OPENIPMI_UNIX_LIBDIR=$(OPENIPMI_ROOT)/unix/.libs
    OPENIPMI_TARGET=$(OPENIPMI_LIBDIR)/libOpenIPMI.a
    
    POPT_VERSION=1.16
    POPT_PACKAGE=popt-$(POPT_VERSION)
    POPT_ROOT=$(DEPS_ROOT)/$(POPT_PACKAGE)
    POPT_LIBDIR=$(POPT_ROOT)/.libs
    POPT_TARGET=$(POPT_LIBDIR)/libpopt.a
    
    ALLINEA_FORGE_PATH?=/opt/arm/forge
    
    CFLAGS ?= -g -O2
    
    SOURCES=counters.c ipmi.c main.c simulate.c
    HEADERS=counters.h ipmi.h main.h options.h simulate.h
    
    TESTS=map-test
    
    VPATH=src test
    
    all: $(TARGET)
    
    $(TARGET): $(SOURCES) $(HEADERS) 
    	$(CC) $(filter %.c,$^) $(CFLAGS) -o $(TARGET) -lrt -I/usr/include/OpenIPMI -L/usr/lib64/ -lOpenIPMI  -lOpenIPMIutils -L/usr/lib64/pkgconfig -lOpenIPMIposix -lm
    
    $(filter-out map-test,$(TESTS)): %: %.c
    	$(CC) $< $(CFLAGS) -o $@
    
    map-test: map-test.c map-metric-plugin-api.c $(ALLINEA_FORGE_PATH)/map/metrics/lib-system-energy.so $(ALLINEA_FORGE_PATH)/lib/64/libmap-sampler.so
    	$(CC) $^ $(CFLAGS) -o $@ -I$(ALLINEA_FORGE_PATH)/map/metrics/include -L$(ALLINEA_FORGE_PATH)/map/metrics -l-system-energy -Wl,-rpath -Wl,$(ALLINEA_FORGE_PATH)/map/metrics -Wl,-rpath -Wl,$(ALLINEA_FORGE_PATH)/lib/64 -lrt
    
    .PHONY: install uninstall clean tar rpm deb test
    
    install:
    	install -d $(DESTDIR)$(sbindir)/
    	install $(TARGET) $(DESTDIR)$(sbindir)/
    	install -d $(DESTDIR)$(libdir)/systemd/system/
    	install -m 0644 lib/systemd/system/ipmi-energy-agent.service $(DESTDIR)$(libdir)/systemd/system/
    	install -d $(DESTDIR)$(sysconfdir)/init.d/
    	install -m 0644 etc/init.d/ipmi-energy-agent $(DESTDIR)$(sysconfdir)/init.d/
    	install -d $(DESTDIR)$(sysconfdir)/default/
    	install -m 0644 etc/default/ipmi-energy-agent $(DESTDIR)$(sysconfdir)/default/
    
    uninstall:
    	rm -f $(DESTDIR)$(sbindir)/$(TARGET)
    	rm -f $(DESTDIR)$(libdir)/systemd/system/ipmi-energy-agent.service
    	rm -f $(DESTDIR)$(etcdir)/init.d/ipmi-energy-agent
    
    clean:
    	rm -f $(TARGET) $(TESTS)
    	rm -rf $(OPENIPMI_ROOT) $(POPT_ROOT)
    	rm -rf debian/ipmi-energy-agent
    
    tar: clean
    	cd .. && tar -cjf $(TARBALL) ipmi-energy-agent
    
    rpm: tar
    	topdir=$$(mktemp -d); \
    	mkdir $$topdir/{BUILD,RPMS,SOURCES,SPECS,SRPMS,BUILDROOT}; \
    	rpmbuild -ta --define="_topdir $$topdir" --define="_rpmdir .." --buildroot="$$topdir/BUILDROOT" ../$(TARBALL); \
    	ret=$$? \
    	rm -rf $$topdir \
    	exit $$ret
    
    deb: clean
    	debuild -i -us -uc -b
    
    test: $(TARGET) $(TESTS)
    	for test in $(filter-out map-test,$(TESTS)); do ./$$test; done
    	PL_FOLDER=$$(mktemp -d); PL_FOLDER="$$PL_FOLDER" ./map-test; ret=$$?; rm -r "$$PL_FOLDER"; exit $$ret
    

    Now i need to figure out how to use the arm tools to figure out usage based on these parameters. Suggestions? thanks

    #     ipmitool sdr | grep 'Watts'
    InputACpower     | 560 Watts         | ok
    TotalDCpower     | 528 Watts         | ok
    NodeDCpower      | 224 Watts         | ok
    #

Children