Стабильное увеличение памяти с помощью файловой системы fuse с использованием libfuse

Я использую инструмент тестирования производительности dbench для fileio в моей реализации файловой системы fuse, и я уверен, что этот предохранитель выдержит испытание.

Я использую библиотеку libfuse ( https://github.com/libfuse/libfuse) для реализации fuse. Я не делаю ничего фантастического, я просто сделал это через, читает, просто делает pread и пишет просто делает pwrite.

Я оставил его работать около 10 часов, и я вижу постоянное увеличение памяти с 0 до 21G. Кто-нибудь еще видел это? Я проверил утечки памяти в моем коде, но я делаю действительно простой сквозной код, который я нигде не выделяю в куче памяти. Как простая функция чтения выглядит следующим образом. FUSE_DATA - это глобальная структура, которая назначается в главной функции.

void fuse_fullpath(char fpath[PATH_MAX], const char *path, const char * rootdir)
{
    if (rootdir == NULL || path == NULL) {
        return;
    }
    strcpy(fpath, rootdir);
    strncat(fpath, path, PATH_MAX);
}

static int fuse_read(const char *path, char *buf, size_t size, off_t offset,
        struct fuse_file_info *fi)
{
    int res;
    char fpath[PATH_MAX];
    fuse_fullpath(fpath, path, FUSE_DATA->rootdir);

    res = pread(fi->fh, buf, size, offset);

   if (res == -1) {
       res = -errno;
   }

   return res;

}

Я попробовал valgrind на fuse, и отчет о нем просто дает мне многое в библиотеке libgobject, как это.

==31923== 8 bytes in 1 blocks are still reachable in loss record 2 of 245
==31923==    at 0x4C2CC70: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==31923==    by 0x54E0668: g_malloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4002.0)
==31923==    by 0x4E63315: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E67108: g_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E6FF71: g_pointer_type_register_static (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E6FFF7: g_gtype_get_type (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)
==31923==    by 0x4E558E7: ??? (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4002.0)

0 ответов

Другие вопросы по тегам