首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么 Linux 默认页大小是 “4KB”?

经常看到一些博客在讲 Linux 内存的 PAGE SIZE 时,都会提到 Linux 默认页大小是 4KB。 笔者通过搜索找到了一些与 PAGE SIZE 相关的资料,希望对读者有所帮助。...1、Linux 默认页大小不是 4KB 首先,我们先看看 Linux 默认页大小是 4KB 是否能够成立?...通过 github 以 #define PAGE_SHIFT 为关键字在 linux 仓库进行搜索,可以得到一个 GitHub 搜索结果页 [1]。...2、Linux 默认页大小是对应架构的 MMU 管理的最小值 本结论来自一篇2002年的文章 Multiple Page Size Support in the Linux Kernel [3]。...3、x86 架构下,Linux 默认页大小是 4Kb x86 架构下,Linux 默认页大小是 4Kb 的原因很简单,x86 的 MMU 管理的最小值就是 4k。

4.9K52
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux 标准大页和透明大页

    Huge pages ( 标准大页 ) 和 Transparent Huge pages( 透明大页 ) 在 Linux 中大页分为两种:Huge pages ( 标准大页 ) 和 Transparent...内存是以块即页的方式进行管理的,当前大部分系统默认的页大小为 4096 bytes 即 4K。1MB 内存等于 256 页;1GB 内存等于 256000 页。...Huge pages 有两种格式大小:2MB 和1GB ,2MB 页块大小适合用于 GB 大小的内存, 1GB 页块大小适合用于 TB 级别的内存;2MB 是默认的页大小。...Transparent Huge Pages Transparent Huge Pages 缩写 THP ,这个是 RHEL 6 开始引入的一个功能,在 Linux6 上透明大页是默认启用的。...标准大页的页面大小 [root@localhost ~]# grep Hugepagesize /proc/meminfo Hugepagesize: 2048 kB 注:THP 目前只能映射异步内存区域

    5.8K50

    linux 查看目录大小_shell判断文件大小

    -s或–summarize 仅显示总计,即当前目录的大小。 -S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。...1> 要显示一个目录树及其每个子树的磁盘使用情况 du /home/linux 这在/home/linux目录及其每个子目录中显示了磁盘块数。...3> 以MB为单位显示一个目录树及其每个子树的磁盘使用情况 du -m /home/linux 这在/home/linux目录及其每个子目录中显示了 MB 磁盘块数。...4> 以GB为单位显示一个目录树及其每个子树的磁盘使用情况 du -g /home/linux 这在/home/linux目录及其每个子目录中显示了 GB 磁盘块数。...10>只显示一个目录树的全部磁盘使用情况 du -s /home/linux 11>查看各文件夹大小:du -h –max-depth=1 查看指定目录: 代码如下: 其中 /path表示路径

    11.6K20

    Linux 如何查看目录大小

    du命令 参考文章:how to check directory size in Linux 用于显示目录或文件的大小。...显示当前目录文件或者文件占用空间:du 显示指定文件或文件夹的大小:du test.txt 方便阅读的格式查看目录所占空间情况:du -h test 仅显示当前文件夹的总计:du -s * 以方便阅读的方式查看指定目录层级的空间占用情况...:du -lh --max-depth=1 du命令排序 查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小...;du *,就是查看当前目录下各子目录和文件的大小。...sort +1 -2 选出排在前面的10个:du ems_data | sort -rn | head 选出排在后面的10个:du ems_data |sort -rn | tail 当前目录的大小

    31.7K30

    Linux内存页分配策略

    伙伴系统分配算法 在上一节, 我们介绍了Linux内核怎么管理系统中的物理内存....但有时候内核需要分配一些物理内存地址也连续的内存页, 所以Linux使用了 伙伴系统分配算法 来管理系统中的物理内存页....在Linux内核中, 把两个物理地址相邻的内存页当作成伙伴, 因为Linux是以页面号来管理内存页的, 所以就是说两个相邻页面号的页面是伙伴关系....Linux内核使用 free_area[i] 管理 2i 个内存页面大小的内存块列表....说明一下, 这里计算位图的大小时为每个内存块申请了一个位, 但事实上每个位记录的是一对伙伴内存块的关系, 所以需要除以2, 而现在明显浪费了一半的内存. 在后面的Linux版本中改进了这个问题.

    3.3K10

    Linux 透明大页 THP 和标准大页 HP

    作者 | JiekeXu 大家好,我是JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Linux 透明大页 THP 和标准大页 HP 目 录 标准大页(HugePages) 透明大页(Transparent...在 Linux 中大页分为两种: Huge pages (标准大页) 和 Transparent Huge pages(透明大页)。...标准大页(HugePages) 标准大页(HugePages)是从 Linux Kernel 2.6 后被引入的,Huge Pages 可以称为大内存页或者大页面,有时候也翻译成大页/标准大页/传统大页...透明大页存在的问题: Oracle Linux team 在测试的过程中发现,如果 linux 开启透明大页 THP,则 I/O 读写性能降低 30%;如果关闭透明大页 THP,I/O 读写性能则恢复正常...4、针对 HugePages 的页表,在各进程之间可以共享,也降低了 PageTables 的大小。实际上这里可以反映出 Linux 在分页处理机制上的缺陷。

    3.1K20

    linux中透明巨页与巨页的区别

    在Linux中,透明巨页(Transparent HugePage)和巨页(HugePage)是两种不同的内存管理技术。 透明巨页是Linux内核中的一项特性,旨在提高内存的利用率和性能。...它通过将内存分配为更大的巨页(通常为2MB或1GB),减少了对内存页表的访问次数,从而提高了内存访问的效率。透明巨页是透明的,应用程序无需进行任何修改即可受益于这种内存管理技术。...而巨页是指一种更大尺寸的内存页,在Linux中可以使用不同的页面大小,常见的巨页大小是2MB或1GB。...巨页可以提供更高的内存访问性能,因为它减少了页表的数量,降低了TLB(Translation Lookaside Buffer)缓存的压力,从而减少了内存访问的开销。...巨页需要应用程序进行适当的修改和配置才能使用。 因此,透明巨页和巨页都是通过增加内存页的尺寸来提高内存访问性能,但透明巨页不需要应用程序的修改,而巨页需要应用程序的支持和配置。

    43810

    Linux 匿名页的反向映射

    我们知道LINUX的内存管理系统中有”反向映射“这一说,目的是为了快速去查找出一个特定的物理页在哪些进程中被映射到了什么地址,这样如果我们想把这一页换出(SWAP),或是迁移(Migrate)的时候,就能相应该更改所有相关进程的页表来达到这个目的...1、为什么要使用反向映射   物理内存的分页机制,一个PTE(Page Table Entry)对应一个物理页,但一个物理页可以由多个PTE与之相对应,当该页要被回收时,Linux2.4的做法是遍历每个进程的所有...2、Linux2.6中是如何实现反向映射 2.1 与RM(Reverse Mapping)相关的结构 page, address_space, vm_area_struct, mm_struct, anon_vma...Linux采用三级页表: PGD:顶级页表,由pgd_t项组成的数组,其中第一项指向一个二级页表。...PMD:二级页表,由pmd_t项组成的数组,其中第一项指向一个三级页表(两级处理器没有物理的PMD)。 PTE:是一个页对齐的数组,第一项称为一个页表项,由pte_t类型表示。

    3.7K31

    ​Linux内核透明巨型页支持

    透明的巨型页面支持是另一种使用大页为虚拟内存提供大页支持的方法, 该支持自动提升和降低页面大小和没有hugetlbfs的缺点。 目前它只适用于匿名内存映射和tmpfs/shmem。...使用虚拟化和嵌套分页只有KVM和Linux客户端同时支持映射更大的TLB正在使用大页面,但显著的速度已经发生了,如果其中一个使用大页面只是因为TLB miss会跑得更快。.../kernel/mm/transparent_hugepage/use_zero_page 一些用户空间(比如一个测试程序,或者一个优化的内存分配库)可能想知道一个透明大页的大小(以字节为单位): cat...如果您没有遍历页表,但是遇到了一个物理的大页,但是您不能在代码中原生地处理它, 您可以通过调用split_huge_page(page)来分裂它。这就是Linux VM在尝试切换大页面之前所做的。...参考⽂献 Linux-5.10.50源码 Documentation/vm/transhuge.rst Documentation/admin-guide/mm/transhuge.rst

    2.8K40

    Linux申请大页内存(mmap)

    ---- 1.为什么要使用大页内存   了解操作系统内存管理的人一般都知道操作系统对内存采用多级页表和分页进行管理,操作系统每个页默认大小为4KB。...如果进程使用的内存过大,比如1GB,这样会在页表中占用 1GB / 4KB = 262144个页表项,而系统TLB可以容纳的页表项远小于这个数量。...操作系统默认支持的大页是2MB,当使用1GB内存时,在页表中将占用 1GB / 2MB = 512个页表项,可以大大提升TLB命中率,进而提升应用性能。...---- 2.怎样使用大页内存 2.1 先预留一定量的大页内存 #先查看系统有多少已经预留的大页内存 # cat /proc/meminfo |grep -i huge #预留192个大页 # sysctl...vm.nr_hugepages=192 #查看是否预留成功 # cat /proc/meminfo |grep -i huge 2.2 通过系统调用来从预留的大页内存中申请大页 #include <sys

    11.9K110

    如何在 Linux 中查看目录大小?

    这是一篇关于如何通过一些常用的命令,显示 CentOS 或 RedHat 中的 Linux 目录大小,以及哪些文件夹占用的空间最大的教程。...-e [0-9][0-9]K -e ^0 | sort -n 在 Linux 文件夹中查找前 10 个大文件 find /home/shenweiyan/Downloads -xdev -type...f -exec du -sk {} \; |sort -rn | head -10 在 Linux 中查找使用率高的磁盘 df -P | awk '0+$5 >= 70 {print}'...# 其实 du -Th 就可以直接看 将限制更改为 10% 的示例 安装软件包以检查 Linux 目录大小 Ncdu 是 NCurses 磁盘使用率的首字母缩写。...结论 如您所见,Linux 目录大小可以通过多种不同的方法来确定,如果您还有其他一些经常使用的相关命令,欢迎在下面的评论中添加。

    13.1K20

    Linux如何生成指定大小的文件

    在一些依赖磁盘空间的测试中,或者需要一些大文件时,最好的办法是快速生成指定大小的文件 fallocate命令(推荐) 可以直接分配一个指定容量的真实大小文件,且速度很快。...用法: fallocate -l 5G test.txt --创建一个大小为5G的真实文件(ls ,du都能看到5�G) dd命令 #创建一个5G大的test.txt文件 dd if=/dev/zero...#创建一个5G大的test.txt文件,但显示容量为10G dd if=/dev/zero of=test.txt count=10 bs=512M seek=10 count 块数量,bs是块大小...,seek是从多少块后开始写真实数据 truncate命令 #创建一个10G大的虚拟文件,真实大小是0 truncate -s 10G 10g.txt 文件大小有真实大小和虚拟大小,du命令计算出来的大小是真实大小...(du -sh *),ls看到的是虚拟大小 参考 fallocate快速创建大文件

    8K50
    领券