Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ceiridge/winfsp-memfs-extended
tmpfs for Windows / Fully dynamic RAM disk by extending WinFsp's memfs to be variable size and maximally resource efficient without compromising performance
https://github.com/ceiridge/winfsp-memfs-extended
filesystem fuse memfs ram ramdisk ramdrive ramfs tmpfs virtual-disk virtual-drive windows winfsp
Last synced: 4 days ago
JSON representation
tmpfs for Windows / Fully dynamic RAM disk by extending WinFsp's memfs to be variable size and maximally resource efficient without compromising performance
- Host: GitHub
- URL: https://github.com/ceiridge/winfsp-memfs-extended
- Owner: Ceiridge
- License: gpl-3.0
- Created: 2022-03-23T04:11:44.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-16T12:02:20.000Z (about 1 month ago)
- Last Synced: 2024-10-19T04:51:36.115Z (about 1 month ago)
- Topics: filesystem, fuse, memfs, ram, ramdisk, ramdrive, ramfs, tmpfs, virtual-disk, virtual-drive, windows, winfsp
- Language: C++
- Homepage:
- Size: 174 KB
- Stars: 58
- Watchers: 4
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tmpfs for Windows / memefs
*WinFsp-MemFs-Extended/MemExtendedFs (memefs)* is a *fork* of [WinFsp's memfs](https://github.com/winfsp/winfsp/tree/master/tst/memfs) with some improvements that make it suitable for a constantly running **RAM disk** that only allocates the **memory actually needed** to store the files.## Improvements
- **Completely rewritten in modern C++**, guaranteeing memory and thread-safety and easy maintainability
- **Much better performance when writing unpreallocated files** because of vectors of sectors instead of using a heap for every file
- Better storage limit indication
- *Total memory* limit instead of *file node \* individual size* limit
- Ability to set the volume label via the CLI (-l)### Benchmarks
![Unpreallocated File Write Times](benchmarks/unprealloctimes.avif) \
![File I/O Speeds](benchmarks/filespeeds.avif) \
As you can see, the unpreallocated file write times make the original memfs unusable, especially for web downloads. But if you need maximum sequential speed and are able to preallocate the file with NtCreateFile and its AllocationSize, then you should use the original memfs.
![Fsbench](benchmarks/fsbench.avif)
**The fsbench results above are outdated** and memefs (this repository) is faster in most cases, sometimes significantly.## CLI
```
usage: memefs OPTIONS
simple example: memefs -i -F NTFS -u "" -m R:options:
-d DebugFlags [-1: enable all debug logs]
-D DebugLogFile [file path; use - for stderr]
-i [case insensitive file system]
-f [flush and purge cache on cleanup]
-s MaxFsSize [bytes of maximum total memory size]
-F FileSystemName
-S RootSddl [file rights: FA, etc; NO generic rights: GA, etc.]
-u \Server\Share [UNC prefix (single backslash)]
-m MountPoint [X:|* (required if no UNC prefix)]
-l VolumeLabel [optional volume label name]
```