mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #1635 from YosysHQ/eddie/print_stats
print_stats footer to return peak memory, option for including children
This commit is contained in:
commit
ffd6f54f92
|
@ -566,34 +566,22 @@ int main(int argc, char **argv)
|
||||||
#else
|
#else
|
||||||
std::string meminfo;
|
std::string meminfo;
|
||||||
std::string stats_divider = ", ";
|
std::string stats_divider = ", ";
|
||||||
# if defined(__linux__)
|
|
||||||
std::ifstream statm;
|
|
||||||
statm.open(stringf("/proc/%lld/statm", (long long)getpid()));
|
|
||||||
if (statm.is_open()) {
|
|
||||||
int sz_total, sz_resident;
|
|
||||||
statm >> sz_total >> sz_resident;
|
|
||||||
meminfo = stringf(", MEM: %.2f MB total, %.2f MB resident",
|
|
||||||
sz_total * (getpagesize() / 1024.0 / 1024.0),
|
|
||||||
sz_resident * (getpagesize() / 1024.0 / 1024.0));
|
|
||||||
stats_divider = "\n";
|
|
||||||
}
|
|
||||||
# elif defined(__FreeBSD__)
|
|
||||||
pid_t pid = getpid();
|
|
||||||
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)pid};
|
|
||||||
struct kinfo_proc kip;
|
|
||||||
size_t kip_len = sizeof(kip);
|
|
||||||
if (sysctl(mib, 4, &kip, &kip_len, NULL, 0) == 0) {
|
|
||||||
vm_size_t sz_total = kip.ki_size;
|
|
||||||
segsz_t sz_resident = kip.ki_rssize;
|
|
||||||
meminfo = stringf(", MEM: %.2f MB total, %.2f MB resident",
|
|
||||||
(int)sz_total / 1024.0 / 1024.0,
|
|
||||||
(int)sz_resident * (getpagesize() / 1024.0 / 1024.0));
|
|
||||||
stats_divider = "\n";
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
|
|
||||||
struct rusage ru_buffer;
|
struct rusage ru_buffer;
|
||||||
getrusage(RUSAGE_SELF, &ru_buffer);
|
getrusage(RUSAGE_SELF, &ru_buffer);
|
||||||
|
if (yosys_design->scratchpad_get_bool("print_stats.include_children")) {
|
||||||
|
struct rusage ru_buffer_children;
|
||||||
|
getrusage(RUSAGE_CHILDREN, &ru_buffer_children);
|
||||||
|
ru_buffer.ru_utime.tv_sec += ru_buffer_children.ru_utime.tv_sec;
|
||||||
|
ru_buffer.ru_utime.tv_usec += ru_buffer_children.ru_utime.tv_usec;
|
||||||
|
ru_buffer.ru_stime.tv_sec += ru_buffer_children.ru_stime.tv_sec;
|
||||||
|
ru_buffer.ru_stime.tv_usec += ru_buffer_children.ru_stime.tv_usec;
|
||||||
|
ru_buffer.ru_maxrss = std::max(ru_buffer.ru_maxrss, ru_buffer_children.ru_maxrss);
|
||||||
|
}
|
||||||
|
# if defined(__linux__) || defined(__FreeBSD__)
|
||||||
|
meminfo = stringf(", MEM: %.2f MB peak",
|
||||||
|
ru_buffer.ru_maxrss / 1024.0);
|
||||||
|
#endif
|
||||||
log("End of script. Logfile hash: %s%sCPU: user %.2fs system %.2fs%s\n", hash.c_str(),
|
log("End of script. Logfile hash: %s%sCPU: user %.2fs system %.2fs%s\n", hash.c_str(),
|
||||||
stats_divider.c_str(), ru_buffer.ru_utime.tv_sec + 1e-6 * ru_buffer.ru_utime.tv_usec,
|
stats_divider.c_str(), ru_buffer.ru_utime.tv_sec + 1e-6 * ru_buffer.ru_utime.tv_usec,
|
||||||
ru_buffer.ru_stime.tv_sec + 1e-6 * ru_buffer.ru_stime.tv_usec, meminfo.c_str());
|
ru_buffer.ru_stime.tv_sec + 1e-6 * ru_buffer.ru_stime.tv_usec, meminfo.c_str());
|
||||||
|
|
Loading…
Reference in New Issue