For Ubuntu 20.04, I use mmap map a disk file(about 4G).
The file changed by day, so I have to mmap another file day by day.
And I found sometimes(not always), the disk read increase fast although mmap done.
Why the mmap not load all the file to memory?
Why mmap still increase disk read?
170 Views Asked by DinoStray At
1
There are 1 best solutions below
Related Questions in LINUX
- Is there some way to use printf to print a horizontal list of decrementing hex digits in NASM assembly on Linux
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- Writes in io_uring do not advance the file offset
- Why `set -o pipefail` gives different output even though the pipe is not failing
- what really controls the permissions: UID or eUID?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Docker container unable to make HTTPS requests to external API
- Whow to use callback_query_handler in Python 3.10
- Create kea runtime directory at startup in Yocto image
- Problem on CPU scheduling algorithms in OS
- How to copy files into the singularity sandbox?
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Error when trying to execute a binary compiled in a Kali Linux machine on an Ubuntu system
- Issue with launching application after updating ElectronJs to version 28.0.0 on Windows and Linux
Related Questions in MEMORY
- 9 Digit Addresses in Hexadecimal System in MacOS
- Memory location changing from 0 to 1 consistently on Mac
- Would event listeners prevent garbage collecting objects referenced in outer function scopes?
- tensorrt inference problem: CPU memory leak
- How to estimate the memory size of a binary voxelized geometry?
- Java Memory UTF-16 Vs UTF-8
- Spring Boot application container memory footprint (Java 21)
- Low memory Windows CE
- How to throw an error when a program acesses a block of memory created by you that has been deallocated by a call of free?
- Golang bufio.Scanner: token too long
- Get the address and size of a loaded shared object on memory from C
- In Redis Databases how do we need to calculate the table size
- ClickHouse Materialized View consuming a lot of Memory and CPU
- How to reduce memory usage for large matrix calculations?
- How to use memray with Gunicorn or flask dev server?
Related Questions in LINUX-KERNEL
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Facing fatal errors while running "yum update" command on CentOS 7/Cloudlinux 7
- crash utility itself crashes while decoding kdump generated from null pointer dereference in kernel module
- How to compile the Linux kernel with -O0 for more detailed debug?
- Linux support for parallel Pixel data Image sensor
- Can't upgrade to newest version of linux-image-6.5.0-26-generic
- How to protect a page so that it cannot be write in mips arch?
- How to extract the .img file into normal kernel source file in the linux?
- Storage size of struct hash_desc desc; isn't known
- How can I intercept failed file openning calls?
- struct nameidata-Linux Kernel Module
- How to modify a 'struct msghdr' in Linux Kernel Module?
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- Hyper Threading: nosmt in grub configuration
Related Questions in UBUNTU-20.04
- How to run android emulator on Ubuntu 20.04 arm64 architecture
- Atomically replace symlink with the folder it points to
- Docker container running MSSQL-Server in Ubuntu 20.04 base image not starting
- Connect to different terminals via SSH
- Is there a way to "auto-tune" network interface interrupt mapping in Ubuntu 20.04 with the PREEMPT_RT patch applied?
- How to delete users who are logged in
- Apache2 failing when enabling php mod (Ubuntu 20.4)
- Docker Build With Low RAM Causing OOM - Raspberry Pi 4B
- Error encountered during terminal catkin build ocs2(ubuntu20)
- ASP.NET on Ubuntu not finding library
- Trying to install Pytorch in an Anaconda env but it is throwing an error related to libculas
- Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found
- ${fileDirname}/*.cpp gives output in single-quotes
- How to automatically get IP address for running jupyter notebook in local network
- Error building dynamic Module ngx_brotli on Ubuntu 20.04 Raspberry Pi 4
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?
In order to understand the problem, fistly you need to understand what happened if you call
mmap().mmap()can be used to map virtual memory to physical memory, and it can also map file to own virtual memory. The function stack is likeksys_mmap_pgoff()->vm_mmap_pgoff()->do_mmap_pgoff()->do_mmap(). After this, we will construct the user space memory map, but it only apply a new area in the virtual memory, we haven't touched the physical memory. When processes schedule to this process and we want to address this physical memory, then it triggers page fault interrupt and calldo_page_fault()->find_vma()->handle_mm_fault()to really get in touch with physical memory, for different file system we will use different function likeext3_filemap_fault().Now let's get back into the question.
mmap()will cause disk read, but we cannot be sure when it will happen. It depends on when you used it and when CPU schedule to this process.What's more, if you use
freeor other tools, you will find Linux OS have a design namedBufferandCache.This mechanism will help to accelecrate I/O read/write speed, and it may also cause the disk read increase when you use
mmap().