Program Listing for File qnx_res_usage.hpp
↰ Return to documentation for file (include/performance_test/utilities/qnx_res_usage.hpp)
// Copyright 2017-2024 Apex.AI, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef PERFORMANCE_TEST__UTILITIES__QNX_RES_USAGE_HPP_
#define PERFORMANCE_TEST__UTILITIES__QNX_RES_USAGE_HPP_
#if defined(QNX)
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
namespace performance_test
{
namespace qnx_res
{
uint64_t get_proc_rss_mem()
{
std::string line;
pid_t my_pid = getpid();
std::ifstream ifile("/proc/" + std::to_string(my_pid) + "/pmap");
int num_line = 0;
uint64_t total_memory = 0u;
while (std::getline(ifile, line)) {
// Discard first line, contains only the header
if (num_line > 0) {
std::istringstream iss{line}; // Construct string stream from line
std::vector<std::string> fields;
std::string field;
while (std::getline(iss, field, ',')) {
fields.push_back(field);
}
// Convert field 9(Rsv) to check memory usage
total_memory += std::stoul(fields[8], nullptr, 16);
}
num_line++;
}
return total_memory;
}
} // namespace qnx_res
} // namespace performance_test
#endif // defined(QNX)
#endif // PERFORMANCE_TEST__UTILITIES__QNX_RES_USAGE_HPP_