Nano Hash - криптовалюты, майнинг, программирование

Как получить информацию о свободной памяти из /dev/shm

Мне нужен способ на C или C++, чтобы получить свободную память, доступную из /dev/shm . Обратите внимание, что на моей архитектуре ARM в Linux, к сожалению, ipcs сообщает о неверном макс. доступная информация о памяти, но df -h правильно дает мне текущую доступную память от tmpfs.

Проблема в том, что я пытаюсь выделить общую память через boost::interprocess::shared_memory_object::truncate , но эта функция не срабатывает, когда память недоступна. Эта проблема, по-видимому, не в boost::interprocess, а в базовом ftruncate(), который не возвращает соответствующую ошибку, когда нет доступной памяти ( https://svn.boost.org/trac/boost/ticket/4374 ), так что boost не может ничего кинуть.


Ответы:


1

Попробуйте функцию glibc statvfs или системный вызов statfs

#include <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf);

#include <sys/vfs.h>    /* or <sys/statfs.h> */
int statfs(const char *path, struct statfs *buf);

// in both structures you can get the free memory
// by the following formula.
free_Bytes = s->f_bsize * s->f_bfree    
18.08.2013

2

posix_fallocate() либо выделит резервные экстенты в файловой системе, либо не недостаточно места (ENOSPC).

#include <fcntl.h>

int posix_fallocate(int fd, off_t offset, off_t len);

Функция posix_fallocate() должна гарантировать, что любое необходимое хранилище для обычных файловых данных, начиная со смещения и продолжая len байтов, выделено на носителе файловой системы. Если posix_fallocate() возвращается успешно, последующие записи в указанные данные файла не должны завершаться ошибкой из-за нехватки свободного места на носителе файловой системы.

Это звучит как функция, которую вы можете захотеть вместо этого.

18.08.2013
  • Я постараюсь и дам вам знать. Спасибо. 19.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..