ADD install-pngquant /tmp/install-pngquant
RUN /tmp/install-pngquant
+# This tool allows us to disable huge page support for our current process
+# since the flag is preserved through forks and execs it can be used on any
+# process
+ADD thpoff.c /src/thpoff.c
+RUN gcc -o /usr/local/sbin/thpoff /src/thpoff.c && rm /src/thpoff.c
+
# clean up for docker squash
RUN rm -fr /usr/share/man &&\
rm -fr /usr/share/doc &&\
--- /dev/null
+// PUBLIC DOMAIN CODE
+//
+// A tiny program that disable transparent huge pages on arbitrary processes
+// thpoff echo 1 : will run echo 1 with SET_THP_DISABLE true on the process
+#include <stdio.h>
+#include <sys/prctl.h>
+#include <unistd.h>
+#include <errno.h>
+
+int main( int argc, char **argv) {
+ if (argc < 2) {
+ fprintf(stderr, "ERROR: expecting at least 1 argument!\n");
+ return -1;
+ }
+ prctl(PR_SET_THP_DISABLE, 1, 0, 0, 0);
+
+ char* newargv[argc];
+ int i;
+
+ newargv[argc-1] = NULL;
+ for (i=1; i<argc; i++) {
+ newargv[i-1] = argv[i];
+ }
+
+ execvp(argv[1], newargv);
+
+ if (errno == ENOENT) {
+ fprintf(stderr, "ERROR: file not found\n");
+ return -1;
+ } else if (errno == EACCES) {
+ fprintf(stderr, "ERROR: can not run file\n");
+ return -1;
+ } else if (errno > 0) {
+ fprintf(stderr, "ERROR: %i errno while attempting to run file\n", errno);
+ return -1;
+ }
+
+ return 0;
+}