Linux 单个文件pagecache刷新和查看

Kafka 应用程序 vs OS 刷新管理和 Linux 刷新行为 生产者客户端的性能直接受到服务端磁盘吞吐量的影响。生产者生成的消息必须被提交到服务器保存,大多数客户端在发送消息之后会一直等待,直到至少有一个服务器确认消息已经成功提交为止。也就是说,磁盘写入速度越快,生成消息的延迟就越低。在考虑硬盘类型对磁盘吞吐量的影响时,是选择传统的机械硬盘(HDD)还是固态硬盘(SSD),我们可以很容易地做出决定。固态硬盘的查找和访问速度都很快,提供了最好的性能。机械硬盘便宜,单块硬盘容量也更大。 阅读详情

一. 刷新文件pagecache

#include <stdio.h>                                                                                                                            
#include <sys/mman.h>
#include <fcntl.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <stdint.h>
#include <errno.h>
int clear_file_cache(const char *filename)   
{   
    struct stat st;   
    if(stat(filename , &st) < 0) {   
        fprintf(stderr , "stat localfile failed, path:%s\n",filename);   
        return -1;   
    }   


    int fd = open(filename, O_RDONLY);   
    if( fd < 0 ) {   
        fprintf(stderr , "open localfile failed, path:%s\n",filename);   
        return -1;   
    }   


    //clear cache by posix_fadvise  


    if( posix_fadvise(fd,0,st.st_size,POSIX_FADV_DONTNEED) != 0) {   
        printf("Cache FADV_DONTNEED failed, %s\n",strerror(errno));   
    }   
    else {   
        printf("Cache FADV_DONTNEED done\n");   
    }   


    return 0;   
}  
int main(int argc, char *argv[])
{
    if (argc < 2 )
    {
        printf("please input filename\n");
                    return -1;
    }
    clear_file_cache( argv[1] );
    return 0;
}

         

交叉编译后生成fadvise,执行./fadvise 文件名

二. 查看文件是否刷新使用fincore

https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/   

交叉编译 util-linux-2.32.tar.gz        

1. 设置交叉环境变量

2. 因为使用libtinfo.so库,而我的交叉编译链里没有,但现在都用 libncurses.so.5.9,所以需要做一个软连接

ln -s libncurses.so.5.9 libtinfo.so

3. vim sys-utils/fallocate.c +354 增加分号

4. CC=arm-openwrt-linux-gcc LD=arm-openwrt-linux-ld ./configure --host=arm-linux --prefix=//home/happy/2disk/dirty_cow/util-linux-2.32/install
make 

make install                                                                    

会在install/bin目录下生成fincore文件

下载到板子上

执行./fincore /lib/ /lib/libcurl.so.4.5.0

  RES PAGES  SIZE FILE

  32K     8  351K /lib/libcurl.so.4.5.0

可以使用一中的代码 刷新一下文件,再来查看,不过有的cache是刷新不掉的。

page cache详解 详述了linux系统page cache的工作原理 立即下载

相关推荐

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 267

深入了解 Linux PageCache 页缓存:优化文件系统的性能、效率

JVM 堆在 Java 应用程序堆里面,堆内:指的是 JVM 堆里面的字节数组;堆外:JVM 堆外,指的是 `Java 进程`里面的、mmap(Memory Map)内存映射:mmap 调用的是进程和内存共享的内存区域,且这个内存区域是 pagecache 到磁盘文件的映射,一对一的关系;mmap 仍然受内核的 pagecache 体系约束,换言之,仍然会丢数据、性能对比:on heap(堆内) < off heap(堆外) < mapped

vnjohn 博主 > 主线分享后端领域业务设计知识、源码思想、架构设计 4780

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 747

操作系统:Page Cache

一致性问题:如果发生写操作并且对应的数据在 Page Cache 中,那么写操作就会直接作用于 Page Cache 中,此时如果数据还没刷新到磁盘,那么内存中的数据就领先于磁盘,此时对应 page 就被称为 Dirty page。操作系统以 page 为单位管理内存,当进程发现需要访问的数据不在内存时,操作系统可能会将数据以页的方式加载到内存中。但主内存的空间是有限的,当主内存中不包含可以使用的空间时,操作系统会从选择合适的物理内存页驱逐回磁盘,为新的内存页让出位置,

向北~的博客 1158

在工作台 LS-DYNA 中检索和变换反作用力分量

在结构仿真中,通常需要由施加的位移或速度边界条件产生的反作用力。此外,通常需要根据用户定义的坐标系解析反作用力分量。在本文中,详细介绍了在Workbench (WB) LS-DYNA 中,相对于用户定义的坐标系检索和变换反作用力分量的过程。

jkh920184196的博客 885

gephi生成网络关系图_路网拓扑重建专题 (3) 网络图生成

城市道路网建模在获得基础路网之后,需要考虑道路交通网络的描述与表达问题。网络是将现实世界中的事物及其关系进行适当的抽象,构造成由节点和边按照一定规则组成的形式。一个实体网络可以由有限个“节点”集合与“边”集合构成的图表示,即网络表示为。对于一个由个节点组成的无权复杂网络,该图有邻接矩阵,这里。根据研究对象不同,建模方法主要包括原始法[1]和对偶法[2]两种,见图1,字母a-j为交叉口编号...

weixin_39761195的博客 3503

linux 刷 cache

【代码】linux 刷 cache。

qq_42125216的博客 868

别再踩坑了!手把手教你用EB Tresos Studio创建Autosar MCAL工程(含模块配置避坑指南)

本文详细介绍了使用EB Tresos Studio创建Autosar MCAL工程的完整流程,包括工程创建前的关键准备、模块配置的避坑指南以及工程验证与代码生成的实用技巧。通过实战案例和黄金准则,帮助开发者高效完成MCAL工程创建,避免常见错误,提升开发效率。

weixin_42536058的博客 444

linux强刷cache,linux I/O stack cache 强制刷新

linux 存储子系统作为最为复杂的子系统之一,拥有很深的模块栈(如图),其中很多模块又有自己的缓存功能(如下图)。实际应用中,用户下发的数据停留在哪个缓存中,是否已经写入磁盘,这些操作对用户来说是个黑盒。如何确保数据已经写入磁盘,可以安全的复位或掉电设备,是用户比较关心的话题。linux IO cache stack中,除了上图中的page cache, inode cache, dir cac...

weixin_34051133的博客 2896

保姆级避坑指南:用IWR6843ISK毫米波雷达实现区域检测,从软件安装到可视化调试全流程

本文提供IWR6843ISK毫米波雷达区域检测的全流程实战指南,涵盖环境搭建、固件烧录、可视化工具配置及性能优化等关键步骤。重点解决软件版本兼容性、烧录失败等常见问题,帮助开发者高效实现精准区域检测,避免开发过程中的常见陷阱。

weixin_42653691的博客 375

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

Linux内核设计与实现(十)| 页高速缓存和页回写

这个工作,也就是决定缓存中什么内容将被清除的策略,称为缓存回收策略。

光看不点赞的博客 3340

多模态对齐方案

本文中我们介绍了 13 中常见的大型多模态模型(Large Multimodal Models, LMM),包括 BLIP-2,LLaVA、MiniGPT、Qwen-VL 以及 Ferret 等。最全 LMM 模型结构(13种)综述。单层linear投影、两层mlp。

liguandong 2082

linux 刷新 stdio,Linux 单个文件pagecache刷新和查看

一. 刷新文件pagecache#include #include #include #include #include #include #include #include #include int clear_file_cache(const char *filename){struct stat st;if(stat(filename , &st) < 0) {fprintf(...

weixin_39781363的博客 309

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux文件系统五 PageCache的使用

一、PageCache介绍:   Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能。此外, 还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page writeback)。 一个inode对应一个page cache对象,一个page cache对象包含多个物理page。 1、PageCache的作用: 缓...

frank_zyp的博客 3641

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文件I/O_03PageCache和Mmap

1.什么是PageCache(1)假如没有PageCache:CPU如果要访问外部磁盘上的文件,由于cpu可以直接访问的存储器是内存。所以磁盘的文件内容要先拷贝到内存上(DMA技术),cup才能读取到。cup访问内存是很快的高速,内存拷贝磁盘文件相对是慢的。(DMA, Direct Memory Access, 存储器直接访问, 允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预) 要优化慢这个问题,就需要提前把磁盘数据先读到内存用做缓存。这个在内存上建立的缓存就是PageCache

u012728971的博客 1749

从 Buffer 和 Cache 到 Linux 的 PageCache 和 BufferCahe

Cache 标准可以翻译为缓存或者快取,主要用于解决系统两端性能不匹配的问题,利用空间局部性原理和时间局部性原理加快访问速度,提高性能。比如我们常见的CPU多级缓存;Buffer 翻译为缓冲区,更偏向解决生产者和消费者速率不匹配的问题,平滑整个传输过程减少延迟,提高性能。比如我们常见的磁盘缓冲区;

Lorin 洛林的后端技术小站 322

linux pagecache与内存占用

linux pagecache与内存占用 实验环境CentOS Linux release 7.3.1611 (Core) 3.10.0-514.6.1.el7.x86_64 一、概念介绍 linux系统中通常使用free命令来查看内存使用情况,free命令主要是从/proc/meminfo文件中读取的内存数据然后进行简单处理进行展示,根据查看free命令的手册了解到各个...

u014426028的博客 983

Linux刷新内存

Linux缓存有page cache,dentry,buffer cache。 page cache加速inode的读写,缩短IO调用时间 dentry用来加速文件路径名到inode的转换 buffer cache加速磁盘块的读写 查看内存情况 free -m 释放内存: 在释放内存前,先强制将系统正在处理的page cahce,dentry,inode写入磁盘。...

L, there! 5292

linux pagecache与内存占用

实验环境 CentOS Linux release 7.3.1611 (Core)  3.10.0-514.6.1.el7.x86_64   一、概念介绍      linux系统中通常使用free命令来查看内存使用情况,free命令主要是从/proc/meminfo文件中读取的内存数据然后进行简单处理进行展示,根据查看free命令的手册了解到各个字段的含义。 total:系统总内

w6c8qq0m的专栏 299

pageCache

写在前面 在开始正式的讨论前,我先抛出几个问题: 谈到磁盘时,常说的HDD磁盘和SSD磁盘最大的区别是什么?这些差异会影响我们的系统设计吗? 单线程写文件有点慢,那多开几个线程一起写是不是可以加速呢? write(2)函数成功返回了,数据就已经成功写入磁盘了吗?此时设备断电会有影响吗?会丢失数据吗? write(2)调用是原子的吗?多线程写文件是否要对文件加锁?有没有例外,比如O_APPE...

u010325193的博客 2291

linux刷新磁盘_Linux内核Page Cache和Buffer Cache关系及演化历史

在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及元数据信息)一同写回磁盘。这里提到的脏页(dirty page)即为页缓存(page cache)。块缓存(buffer cache),则是内核为了加速对底层存储介质的访问速度,而构建的一层缓存。他缓存部分磁盘数据,当有磁盘读取请求时,会首先查看块缓存中...

weixin_39609527的博客 976

磁盘缓存PageCache

引入Cache层的母的是为了提高linux操作系统对磁盘访问的性能, Cache层在内存中缓存了磁盘上的部分数据,当数据的请求到达时,如果在Cache中存在该数据且是最新的,则直接将数据传递给用户程序,免除了对底层磁盘的操作, 在linux实现中 ...

dw147258dw的专栏 500

Linux Page Cache参数调优在kafka中的应用

1. pdflush刷新脏数据条件 cached中的脏数据满足如下几个条件中一个或者多个的时候就会被pdflush刷新到磁盘: (1)数据存在的时间超过了dirty_expire_centisecs(默认30s)时间 (2)脏数据所占内存 /(MemFree + Cached - Mapped) > dirty_background_ratio。也就是说当脏数据所占用的内存占(MemFree...

黑曼巴 9494
上一篇: jessezeng TCP协议端口状态说明:CLOSE-WAIT、TIME-WAIT 、LISTENING、SYN_SENT、ESTABLISHED、LAST-ACK ...
下一篇: mtd information
wdsfup
博客等级 码龄20年 31粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值