llmemory: use getrusage for getCurrentRSS on linux

master
Miezhiko 2023-10-31 10:58:09 +04:00 committed by Andrey Lihatskiy
parent 6abeb9983e
commit 9bd1ef1cf8
1 changed files with 7 additions and 23 deletions

View File

@ -37,6 +37,7 @@
# include <mach/mach_init.h>
#elif LL_LINUX
# include <unistd.h>
# include <sys/resource.h>
#endif
#include "llmemory.h"
@ -228,33 +229,16 @@ U64 LLMemory::getCurrentRSS()
U64 LLMemory::getCurrentRSS()
{
static const char statPath[] = "/proc/self/stat";
LLFILE *fp = LLFile::fopen(statPath, "r");
U64 rss = 0;
struct rusage usage;
if (fp == NULL)
{
LL_WARNS() << "couldn't open " << statPath << LL_ENDL;
if (getrusage(RUSAGE_SELF, &usage) != 0) {
// Error handling code could be here
return 0;
}
// Eee-yew! See Documentation/filesystems/proc.txt in your
// nearest friendly kernel tree for details.
{
int ret = fscanf(fp, "%*d (%*[^)]) %*c %*d %*d %*d %*d %*d %*d %*d "
"%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %Lu",
&rss);
if (ret != 1)
{
LL_WARNS() << "couldn't parse contents of " << statPath << LL_ENDL;
rss = 0;
}
}
fclose(fp);
return rss;
// ru_maxrss (since Linux 2.6.32)
// This is the maximum resident set size used (in kilobytes).
return usage.ru_maxrss * 1024;
}
#else