Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is it possible to convert ImdiskHandleComm() into multi-threaded version? #42

Open
tugrul512bit opened this issue Sep 23, 2021 · 1 comment

Comments

@tugrul512bit
Copy link

tugrul512bit commented Sep 23, 2021

I'm adding some multi-gpu stuff into it to use all GPUs for single drive. It works but it is slow because of multiple lock-guards and small paging size in the extra codes I add. If given 64 threads even on 8 core cpu, it can have 5-6 GB/s throughput but it is down to only 50MB/s per thread per gpu sequential and 20MB/s per thread per gpu random access (if page size is 4kB).

Is there a possibility to convert the ImdiskHandleComm() method to make it handle 64 requests in parallel as if char-array is thread-safe (array class I'm using is thread-safe so it doesn't need explicit lock)? Or OS/Imdisk is doing parallelism already? Where can I set number of "parallelism" threads?

@Logic-Elliven
Copy link

Logic-Elliven commented Nov 18, 2021

Hello tugrul

I'm no dev so dont know if this helps:

[Since] ImDisk Virtual Disk Driver beta 2.0.0.

"...Rewritten I/O request logic to allow fully parallel I/O.
This is by default only used when communicating with AWEAlloc driver for physical memory virtual disks, but can be turned on for any virtual disks backed by an image file or another kernel level driver, provided that the underlying driver supports it.
Use -o par command line option to turn on this feature.

This change should give better physical RAM disk performance. It should also give better performance for instance when using ImDisk to mount offsets of ?\PhysicalDrive objects as virtual disks.
AWEAlloc driver rewritten to support multiple requests simultaneously, which means that ImDisk no longer need to queue requests and switch to a worker thread to complete requests to a physical memory RAM disk..."
http://www.ltr-data.se/opencode.html/changelog.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants