There are use cases where I can't have a lot of ram, and sometimes due to docker based services doesn't always provide more than 512mb/1gb of ram, or if I run multiple rust based gui apps and if each take 100mb of ram normally, how can I implement a swapfile/ virtual ram to exceed allotted ram? Also os level swapfiles don't let users choose which app can use real ram and which swapfile, so it can become a problem too. I want to use swapfile as much as possible, and not even real ram, if possible. Users and hosting services provide with lot of storage usually (more than 10gb normally) so it would be a good way to use the available storage too! If swapfile or anything like that aren't possible, I would like to know if there is any difference in speed and cpu consumption between "cache data in ram" apps and "cache data in file and read it when required" apps. If the latter is slow normally and not as efficient as swapfiles, I would like to know the possible ways how os manages to make swapfiles that efficient than apps.
How To implement swapfile cross operating system
220 Views Asked by Ren Hiyama At
1
There are 1 best solutions below
Related Questions in RUST
- `ColumnNotFound("id")` when inserting with SQLx
- Polars with Rust: Out of Memory Error when Processing Large Dataset in Docker Using Streaming
- Why is a slice a DST?
- Unable to Retrieve External Public Address in libp2p Swarm Events
- Dynamic Nested Multi-Dimensional Arrays in Rust
- Generic property compare
- "(Reason: CORS header ‘Access-Control-Allow-Origin’ missing)" while trying to access Actix webserver from Wix site
- Is a directory (os error 21) when using rust to move a file
- Different types even though same value assigned
- How to pass a byte array to a WASM module from wasmer in Rust?
- Mutable borrow problem with inserting Vacant entry into HashMap
- Expected behavior while printing reference and dereference of a variable
- How to allocate a large structure in a heap baked `Arc<T>` without stack overflow in Rust?
- In Rust, how to inspect values captured by a closure?
- How to encrypt a string at compile-time and decrypt it at runtime in Rust, similar to constexpr encryption in c++?
Related Questions in RAM
- Windows 64-bit: Do overlapped MMF windows mean more RAM consumption (doubling the RAM where the file views overlap)?
- Read/write data to DS1642
- Failed to use memory bits in fpga
- Is it better to pass a C++ object by reference than by value if it is in RAM?
- Stm32 Problem with reading from Flash memory (incorrect data)
- MariaDB not releasing RAM after jobs finish
- How to secure a Python project on Windows from domain administrators?
- Memory consumption of Parent & child process in Linux
- Simulation contradiction using the same Vivado block ram IP
- RAM crash executing procedure in Spyder
- Will the 16n prefetch in DDR5 affect the bandwidth of small-granularity memory accesses?
- How do I view individual memory blocks on my PC?
- pidstat output to file, once
- Get memory usage of this process C++ Win32
- how do I determine how much RAM a jupyter notebook has allocated and is using?
Related Questions in MEMORY-EFFICIENT
- R: Efficient Way to partly modify diagonal of matrix
- The Reason Behind Employing an Additional Array and Counting Smaller Elements in the Counting Sort Algorithm
- Efficient way to iterate through df rows
- How to correctly reuse data in registers to compute faster the Pearson Correlation between vectors in a matrix
- Search in txt file with more than 3 million lines in C#
- How to generate all length n combinations of k elements (with replacement) that contain each element at least once?
- Given two arrays A and B, how to efficiently combine them so that the output is an array in which each element is a tuple (Aij,Bij)?)
- Fast and efficient substring extraction and comparison in R
- How to be more code efficient on fortran? I solved an exercise and I'm not satisfied with my own answer
- Efficiently enumerating multinomials with constant sum - R
- What's most efficient way of reading larger files in python?
- Running out of memory modifying a long string
- How to shuffle a function consistently from a seed number
- Improving CLOS memory-efficiency in Common Lisp?
- Compact way to save a list of subsets
Related Questions in SWAPFILE
- Why did Vim create a constantly growing .swp file?
- Custom Node Configuration in AKS using Terraform
- Error writing lock file: Permission denied
- Where accessing swap space is handled in Linux kernel?
- How to make use of swap space on disk when run out of modern gpu memory?
- How To implement swapfile cross operating system
- I need docker instance to NOT utilize the host swap
- Make a copy of swapfile.sys to new location [File not found error]
- Can I create an array exceeding RAM, if I have enough swap memory?
- How to get vim to list the PIDs of selected files that are presently being edited, avoiding recovery mode, and not list all the other files
- How to create swap partition/file on a Yocto distribution
- Move REDIS data between memory and disk
- R eats up all RAM, then all swap, and the suddenly closes
- Is there a way to force a hard RAM-usage limit for R, resulting in it using swap space after it is hit?
- configuring a swap space in a guest running under qemu
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
An application does not control whether the memory they allocate is allocated on real RAM, on a swap partition, or else. You just ask for memory, and the OS is responsible for finding available memory to give to you.
Besides that, note that using swap (sometimes called swapping) is extremely bad performance-wise. How much depends a lot on your hardware, but it's about three orders of magnitude. This is even amplified if you are interacting with a user: a program that is fetching some resources will not be too bothered if it has to wait one minute to get them instead of a few milliseconds because the system is under heavy load, but a user will generally not be that patient.
Also note that, when swapping, the OS does not chose which application gets the faster RAM and which ones get the swap memory at random. It will try to determine which application should be prioritized, by how much, etc. based on how it was configured (at least for the Linux kernel), so in reality it's the user who, in the end, decides which applications get the most RAM (ahead of time, of course: they are not prompted each time the kernel has to make that decision with a little pop-up...).
Finally, modern OS allow several applications to allocate memory that overlap, as long as each application is not fully using the memory it asked for (which is kind of usual), allowing you to run applications that in theory require more RAM that you actually have.
This was on the OS part: now to the application part. Usually, when you write a program (whose purpose is not specifically RAM-related), you should not really care for memory consumption (up to a certain point), especially in Rust. Not only that is usually handled by the OS in case you used a little bit too much memory, but when it's possible, most people prefer to trade a little more memory usage (even a lot more) for better CPU performance, because RAM is a lot cheaper than CPU.
There are exceptions, of course, in which the memory consumption is so high that you can't really afford not paying attention. In these cases, either you let the user deal with this problem (ie. this application is known to consume a lot of memory because there are no other ways to do this, so if you want to use it, just have a lot of memory), as often video games do, or you rethink your application to reduce the memory usage trading it for some CPU efficiency, as for example is done when you are handling graphs so huge you couldn't even store them on all the hard disks of the world (in which case your application has to be smart enough to be able to work on small parts of the graph at the time), or finally you are working with a big resource but which can be stored on the hard disk, so you just write it on a file and access it chunks-by-chunks, as some database managers do.