[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Antw: LMDB on Ramdisk (tmpfs)
>>> Luca Foppiano <luca.foppiano@inria.fr> schrieb am 21.03.2018 um 18:26 in
Nachricht <0453D312-E481-4F93-BF31-7A5BFF55E73C@inria.fr>:
> Dear everybody,
> I'm using one of your component (LMDB) via a java JNDI bindings
> implementation (https://github.com/deephacks/lmdbjni
> <https://github.com/deephacks/lmdbjni>) and I'm having an issue
> when I deploy my LMDB file on a tempfs filesystem in RAM.
>
> The issue do not occur when the LMDB files are stored on a "normal"
> filesystem.
> When the data is in the tempfs ramdisk all the allocated memory ends up
> being in
> the Dirty area (it has not been written back to the Filesytem).
So where do you expect a dirty buffer for a RAM filesystemn to be written? To RAM? Then obviously copying RAM to RAM is just a waste of time. My guess is that ist working as designed.
>
> Here an example using the ramdisk:
>
> 7ce320000000-7cfc20000000 r--s 00000000 00:26 2459
> /ramfs/nerd/data/db/db-en/entityEmbeddings/data.mdb
> Size: 104857600 kB
> Rss: 1255680 kB
> Pss: 1255680 kB
> Shared_Clean: 0 kB
> Shared_Dirty: 0 kB
> Private_Clean: 0 kB
> Private_Dirty: 1255680 kB <---
> Referenced: 1255680 kB
> Anonymous: 0 kB
> AnonHugePages: 0 kB
> Shared_Hugetlb: 0 kB
> Private_Hugetlb: 0 kB
> Swap: 0 kB
> SwapPss: 0 kB
> KernelPageSize: 4 kB
> MMUPageSize: 4 kB
> Locked: 0 kB
> VmFlags: rd sh mr mw me ms sd
>
> and here an example without:
>
> 7ca4fc000000-7cbdfc000000 r--s 00000000 fd:00 11154951
> /data/workspace/shared/nerd-data/db/db-en/entityEmbeddings/data.mdb
> Size: 104857600 kB
> Rss: 838124 kB
> Pss: 838124 kB
> Shared_Clean: 0 kB
> Shared_Dirty: 0 kB
> Private_Clean: 838124 kB <----
> Private_Dirty: 0 kB
> Referenced: 764872 kB
> Anonymous: 0 kB
> AnonHugePages: 0 kB
> ShmemPmdMapped: 0 kB
> Shared_Hugetlb: 0 kB
> Private_Hugetlb: 0 kB
> Swap: 0 kB
> SwapPss: 0 kB
> KernelPageSize: 4 kB
> MMUPageSize: 4 kB
> Locked: 0 kB
> VmFlags: rd sh mr mw me ms sd
>
>
> According to my understanding the memory is dirty when 1)there are open
> transactions, 2) the data has not been written back to the filesystem
>
> What I don't understand is why there is a difference between filesystem and
> ramdisk?
> Is there any reason? The application (listed above) is not writing on the
> lmdb,
> but just reading (using reading transaction).
>
> Thank you
> Luca