On linux use sysfs instead of lscpu

Use sysfs (https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-devices-node)
to determine processor to NUMA node mapping.

Avoids problems on some machines with high core count where lscpu was showing high cpu utilization.

closes https://github.com/official-stockfish/Stockfish/pull/5315

No functional change
This commit is contained in:
Tomasz Sobczyk
2024-05-30 17:22:53 +02:00
committed by Disservin
parent 86694b5914
commit c8375c2fbd
3 changed files with 107 additions and 84 deletions
+13
View File
@@ -42,12 +42,14 @@ using AdjustTokenPrivileges_t =
#endif
#include <atomic>
#include <cctype>
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <limits>
#include <iterator>
#include <mutex>
#include <sstream>
#include <string_view>
@@ -603,6 +605,17 @@ size_t str_to_size_t(const std::string& s) {
return static_cast<size_t>(value);
}
std::optional<std::string> read_file_to_string(const std::string& path) {
std::ifstream f(path, std::ios_base::binary);
if (!f)
return std::nullopt;
return std::string(std::istreambuf_iterator<char>(f), std::istreambuf_iterator<char>());
}
void remove_whitespace(std::string& s) {
s.erase(std::remove_if(s.begin(), s.end(), [](char c) { return std::isspace(c); }), s.end());
}
std::string CommandLine::get_binary_directory(std::string argv0) {
std::string pathSeparator;