Skip to content
This repository has been archived by the owner on Mar 11, 2019. It is now read-only.

Commit

Permalink
fix(powerapi-code-energy-analysis): fix bugs and improve the resilien…
Browse files Browse the repository at this point in the history
…ce to errors
  • Loading branch information
mcolmant committed Oct 7, 2016
1 parent 7ee3dde commit 6b4483b
Show file tree
Hide file tree
Showing 15 changed files with 456 additions and 1,619 deletions.
16 changes: 7 additions & 9 deletions docker/Dockerfile-code-energy-analysis
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
FROM alpine:3.3
FROM openjdk:8-jre

ENV POWERAPI_PACKAGE powerapi-code-energy-analysis
ENV LIBPFM_PACKAGE libpfm-4.6.0

ENV INSTALL_PACKAGES ca-certificates linux-headers libc-dev make gcc patch
ENV RUNTIME_PACKAGES openjdk8-jre bash libcgroup-tools procps
ENV INSTALL_PACKAGES wget make gcc
ENV RUNTIME_PACKAGES cgroup-tools

COPY docker/libpfm/config.mk.patch /root/
COPY ${POWERAPI_PACKAGE}/target/universal/${POWERAPI_PACKAGE} /root/${POWERAPI_PACKAGE}/

VOLUME /conf /tmp

RUN apk update && apk upgrade && apk add $INSTALL_PACKAGES $RUNTIME_PACKAGES --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ && \
wget https://circle-artifacts.com/gh/sgerrand/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-glibc/packages/x86_64/glibc-2.21-r2.apk && apk --allow-untrusted add glibc-2.21-r2.apk && rm -f glibc-2.21-r2.apk && \
wget http://downloads.sourceforge.net/project/perfmon2/libpfm4/${LIBPFM_PACKAGE}.tar.gz && tar -C /root -xzvf ${LIBPFM_PACKAGE}.tar.gz && patch -d /root/$LIBPFM_PACKAGE -p1 < /root/config.mk.patch && (cd /root/$LIBPFM_PACKAGE; make lib; make install) && rm -rf /root/config.mk.patch /root/$LIBPFM_PACKAGE ${LIBPFM_PACKAGE}.tar.gz && \
RUN apt-get update && apt-get -y upgrade && apt-get -y install $INSTALL_PACKAGES $RUNTIME_PACKAGES && \
wget http://downloads.sourceforge.net/project/perfmon2/libpfm4/${LIBPFM_PACKAGE}.tar.gz && tar -C /root -xzvf ${LIBPFM_PACKAGE}.tar.gz && (cd /root/$LIBPFM_PACKAGE; make lib; make install) && rm -rf /root/$LIBPFM_PACKAGE ${LIBPFM_PACKAGE}.tar.gz && \
rm -rf /root/${POWERAPI_PACKAGE}/conf && ln -s /conf/ /root/${POWERAPI_PACKAGE}/conf && \
apk del glibc $INSTALL_PACKAGES && \
rm -rf /var/cache/apk/*
apt-get -y remove --auto-remove $INSTALL_PACKAGES && \
rm -rf /var/lib/apt/lists/*

WORKDIR /root/$POWERAPI_PACKAGE

Expand Down
6 changes: 3 additions & 3 deletions docker/agent/Dockerfile-agent
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
FROM ubuntu:14.04

ARG NB_CORES
ARG SMPL_THRESHOLD
ARG UNHALTED_CYCLES_EVT
ARG UNHALTED_REF_CYCLES_EVT

Expand All @@ -22,9 +21,10 @@ ENV RUNTIME_PACKAGES libdw-dev libunwind8-dev
RUN apt-get update && apt-get -y upgrade && apt-get -y install $INSTALL_PACKAGES $RUNTIME_PACKAGES && \
wget http://downloads.sourceforge.net/project/perfmon2/libpfm4/${LIBPFM_PACKAGE}.tar.gz && tar -C /root -xzvf ${LIBPFM_PACKAGE}.tar.gz && (cd /root/$LIBPFM_PACKAGE; make lib; make install) && rm -rf /root/$LIBPFM_PACKAGE ${LIBPFM_PACKAGE}.tar.gz && \
wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz && tar -C /root -xzvf protobuf-2.6.1.tar.gz && (cd /root/protobuf-2.6.1; ./autogen.sh; ./configure; make; make install) && rm -rf /root/protobuf-2.6.1 protobuf-2.6.1.tar.gz && \
wget https://github.com/squidfunk/protobluff/archive/0.5.0.tar.gz && tar -C /root -xzvf 0.5.0.tar.gz && (cd /root/protobluff-0.5.0; ./autogen.sh; ./configure; make; make install) && rm -rf /root/protobluff-0.5.0 0.5.0.tar.gz && \
ldconfig && \
(cd /root/powerapi-agent; make NB_CORES=${NB_CORES} SMPL_THRESHOLD=${SMPL_THRESHOLD} UNHALTED_CYCLES_EVT=${UNHALTED_CYCLES_EVT} UNHALTED_REF_CYCLES_EVT=${UNHALTED_REF_CYCLES_EVT}) && \
wget https://github.com/protobuf-c/protobuf-c/releases/download/v1.2.1/protobuf-c-1.2.1.tar.gz && tar -C /root -xzvf protobuf-c-1.2.1.tar.gz && (cd /root/protobuf-c-1.2.1; ./configure; make; make install) && rm -rf /root/protobuf-c-1.2.1 protobuf-c-1.2.1.tar.gz && \
ldconfig && \
(cd /root/powerapi-agent; make NB_CORES=${NB_CORES} UNHALTED_CYCLES_EVT=${UNHALTED_CYCLES_EVT} UNHALTED_REF_CYCLES_EVT=${UNHALTED_REF_CYCLES_EVT}) && \
mv /root/powerapi-agent/powerapi-agent /root/powerapi-agent-app && rm -rf /root/powerapi-agent && mv /root/powerapi-agent-app /root/powerapi-agent && \
apt-get -y remove --auto-remove $INSTALL_PACKAGES && \
rm -rf /var/lib/apt/lists/*
Expand Down
12 changes: 6 additions & 6 deletions docker/agent/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
CC=cc
CFLAGS=-c -Wall -O0
INCLUDE=-I/usr/local/include
LDFLAGS=-L/usr/local/lib -lpfm -lprotobluff -L/usr/lib -lunwind -lunwind-generic -lunwind-ptrace -ldw
SOURCES=payload.pb.c perf_util.c powerapi-agent.c
LDFLAGS=-L/usr/local/lib -lpfm -lprotobuf-c -L/usr/lib -lunwind -lunwind-generic -lunwind-ptrace -ldw
SOURCES=payload.pb-c.c perf_util.c powerapi-agent.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=powerapi-agent

Expand All @@ -11,15 +11,15 @@ all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) -o $@ $(LDFLAGS)

payload.pb.c: payload.proto
protoc --protobluff_out=. $<
payload.pb-c.c: payload.proto
protoc-c --c_out=. $<

powerapi-agent.o:
$(CC) $(CFLAGS) -D NB_CORES=$(NB_CORES) -D SMPL_THRESHOLD=$(SMPL_THRESHOLD) -D UNHALTED_CYCLES_EVT=\"$(UNHALTED_CYCLES_EVT)\" -D UNHALTED_REF_CYCLES_EVT=\"$(UNHALTED_REF_CYCLES_EVT)\" $(INCLUDE) powerapi-agent.c -o $@
$(CC) $(CFLAGS) -D NB_CORES=$(NB_CORES) -D UNHALTED_CYCLES_EVT=\"$(UNHALTED_CYCLES_EVT)\" -D UNHALTED_REF_CYCLES_EVT=\"$(UNHALTED_REF_CYCLES_EVT)\" $(INCLUDE) powerapi-agent.c -o $@

.c.o:
$(CC) $(CFLAGS) $(INCLUDE) $< -o $@

clean:
rm -f $(OBJECTS) $(EXECUTABLE)
rm -rf payload.pb.c payload.pb.h
rm -rf payload.pb-c.c payload.pb-c.h
87 changes: 0 additions & 87 deletions docker/agent/payload.pb.c

This file was deleted.

Loading

0 comments on commit 6b4483b

Please sign in to comment.