int dump_rapl_power_info(FILE *writedest) { int socket; static uint64_t *rapl_flags = NULL; struct rapl_power_info info; static uint64_t sockets = 0; if (rapl_flags == NULL || sockets == 0) { sockets = num_sockets(); if (rapl_storage(NULL, &rapl_flags)) { return -1; } } for (socket = 0; socket < sockets; socket++) { get_rapl_power_info(socket, &info); if (*rapl_flags & PKG_POWER_INFO) { fprintf(writedest, "Socket: %d\n", socket); fprintf(writedest, " pkg_max_power (W) = %8.4lf pkg_min_power (W) = %8.4lf\n", info.pkg_max_power, info.pkg_min_power); fprintf(writedest, " pkg_max_window (s) = %8.4lf pkg_therm_power (W) = %8.4lf\n", info.pkg_max_window, info.pkg_therm_power); } if (*rapl_flags & DRAM_POWER_INFO) { fprintf(writedest, "Socket: %d\n", socket); fprintf(writedest, " dram_max_power (W) = %8.4lf dram_min_power (W) = %8.4lf\n", info.dram_max_power, info.dram_min_power); fprintf(writedest, " dram_max_window (s) = %8.4lf dram_therm_power (W) = %8.4lf\n", info.dram_max_window, info.dram_therm_power); } } return 0; }
void set_to_defaults() { int socket = 0; int numsockets = num_sockets(); struct rapl_power_info raplinfo; struct rapl_limit socketlim, socketlim2, dramlim; fprintf(stdout, "Setting Defaults\n"); for (socket = 0; socket < numsockets; socket++) { get_rapl_power_info(socket, &raplinfo); socketlim.bits = 0; socketlim.watts = raplinfo.pkg_therm_power; socketlim.seconds = 1; socketlim2.bits = 0; socketlim2.watts = raplinfo.pkg_therm_power * 1.2; socketlim2.seconds = 3; dramlim.bits = 0; dramlim.watts = raplinfo.dram_max_power; dramlim.seconds = 1; if (ISVERBOSE) { dump_rapl_limit(&socketlim, stdout); dump_rapl_limit(&socketlim2, stdout); dump_rapl_limit(&dramlim, stdout); } set_pkg_rapl_limit(socket, &socketlim, &socketlim2); set_dram_rapl_limit(socket, &dramlim); } }