sys_sync简介

S4休眠及唤醒功能分析(Arm64/linux4.19) Linux内核包含多种休眠状态,目前主要是4种,目前S4是最省电的一种休眠形式,但恢复速度最慢。状态ACPI等级动作备注冻结用户空间进程停止timekeepingIO设为低功耗状态通用,纯软件实现,支持所有平台,且可以用于下面的所有休眠之中StandbyS1包含Suspend-to-idle所有动作非引导cpu offline待机,适度节能,较快恢复S3包含Standby所有动作内存/唤醒设备外,所有设备进入低功耗状态,内存自动刷新睡眠,提供较大程度节能,恢复较慢S4。 阅读详情

在我们RTFSC的时候,我们经常会看到一些关于sys_sync的地方,这是一种系统同步的机制。这个函数实际上是一个系统调用的过程。具体的代码在sync.c文件中:

/*
 * sync everything.  Start out by waking pdflush, because that writes back
 * all queues in parallel.
 */
SYSCALL_DEFINE0(sync)
{
wakeup_flusher_threads(0);
sync_filesystems(0);
sync_filesystems(1);
if (unlikely(laptop_mode))
laptop_sync_completion();
return 0;
}

其实在这个系统调用中,主要的工作就是sync_filesystem,为什么这个地方会调用两次?我们接着往下看:

/*
 * Sync all the data for all the filesystems (called by sys_sync() and
 * emergency sync)
 */
static void sync_filesystems(int wait)
{
iterate_supers(sync_one_sb, &wait);
}

主要的工作是sync_one_sb中,

static void sync_one_sb(struct super_block *sb, void *arg)
{
if (!(sb->s_flags & MS_RDONLY))
__sync_filesystem(sb, *(int *)arg);
}

但是这个函数真正完成的任务也不是在每次的iterate_supers函数中都要执行到,从代码中我们能够看到需要满足的条件是怎样的。

/*
 * Do the filesystem syncing work. For simple filesystems
 * writeback_inodes_sb(sb) just dirties buffers with inodes so we have to
 * submit IO for these buffers via __sync_blockdev(). This also speeds up the
 * wait == 1 case since in that case write_inode() functions do
 * sync_dirty_buffer() and thus effectively write one block at a time.
 */
static int __sync_filesystem(struct super_block *sb, int wait)
{
/*
* This should be safe, as we require bdi backing to actually
* write out data in the first place
*/
if (sb->s_bdi == &noop_backing_dev_info)
return 0;


if (sb->s_qcop && sb->s_qcop->quota_sync)
sb->s_qcop->quota_sync(sb, -1, wait);


if (wait)
sync_inodes_sb(sb);
else
writeback_inodes_sb(sb);


if (sb->s_op->sync_fs)
sb->s_op->sync_fs(sb, wait);
return __sync_blockdev(sb->s_bdev, wait);
}

这个函数完成的任务的主题就是if-else语句,也是前面在sync_filesystem中为什么传递0和1这两个参数的原因所在。

Android待机的suspend_sys_sync_queue分析 Android待机的suspend_sys_sync_queue分析 Android的4.0在待机机制上和之前版本大同小异,也可以说是机制相对完善并没多大的问题反馈出来。不过有个细节的地方,改动幅度较大,来看看 在linux待机机制中,开始待机的时候会调用sys_sync函数,sys_sync系统调用被用户空间函数调用, 用来将缓存中的数据写入块设备,sys_sync系统调用 阅读详情

相关推荐

sys.dbms_xa dist_txn_sync执行频繁导致性能问题

sys.dbms_xa.dist_txn_sync是Oracle数据库中用于分布式事务同步的一个功能模块,属于DBMS_XA包的一部分。还有高频调用SQL bn4nkxhy47yr3 (BEGIN sys.dbms_xa.dist_txn_sync;sys.dbms_xa.dist_txn_sync是oracle 内置存储过程,用于恢复应用了RAC类型oracle数据库的事务一致性。随着undo表空间增大,sys.dbms_xa.dist_txn_sync执行越来越慢,特别是节点3的undo暴增。

lmxx2020的博客 658

缓存同步操作--sys_sync系统调用

sys_sync系统调用被用户空间函数调用,用来将缓存中的数据写入块设备,sys_sync系统调用将buffer、inode和super在缓存中的数据写入设备。sys_sync函数在fs/buffer.c中,现分析如下: asmlinkage long sys_sync(void) { do_sync(1); return 0; }   函数do_sync各种数据,开始

J.A.Y的专栏 9773

深入解析TMS320F280013x系统寄存器:SYNC_SOC与SYS_STATUS配置与调试

在嵌入式系统开发中,内存映射寄存器是连接软件与硬件的核心桥梁,其设计原理直接决定了微控制器的外设控制与系统监控能力。通过统一的地址空间映射,开发者能以C语言指针或结构体直接操作硬件,实现高效配置。这种机制的技术价值在于为复杂实时控制应用提供了精确的时序同步与可靠的错误处理基础。在数字电源、伺服驱动等高精度应用场景中,系统级寄存器组如SYNC_SOC_REGS和SYS_STATUS_REGS发挥着关键作用。前者作为信号路由中枢,负责PWM同步与ADC触发信号的精准调度;后者则充当系统健康监测仪,管理浮点运算溢

weixin_32349093的博客 238

linux命令之sync

sync是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。 其中包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。 [wang@localhost usb]$ man sync NAME        sync - flush file system buffers SYNOPSIS        sync [OPTION]

williamwang2013的专栏 3万+

UE4免费资产库新玩法:Quixel Bridge插件安装与Megascans资源导入全攻略

本文详细介绍了如何在UE4中安装Quixel Bridge插件并导入Megascans资源,帮助开发者快速获取高质量3D资产。通过分步教程和实用技巧,提升游戏或影视场景的制作效率,特别适合需要真实感环境的项目。

weixin_27729671的博客 366

VizCut 全自动批量视频二次去重处理!支持视频无水印解析下载和批量剪辑,完全免费,使用简单!

可制作和分享剪辑模板,已提供20+种剪辑方案,内置众多扫光蒙版素材。支持二次去重批量处理,完全免费,无广告,且支持视频无水印解析下载,非常强大。如果说我们处理的视频需要进行一样的参数设置的话,就可以把我,1设置的参数设置为模板,后面就可以一键调用。1. 本地CPU处理,可设置线程数,可开启GPU加速,无任何限制,全看机器性能。适用场景:自媒体搬运、短视频二创、批量去重等,完全免费,无广告干扰!3. 20+种参数可调可选,内置很多相关素材。可保存为模板,可复用、可分享、可导入。2. 所有参数的设置,

goodfat的博客 5322

-sync函数影响性能以及system函数

sync函数会强制将内核中的所有修改过的缓冲区刷新,并立刻返回,不会等到实际的I/O操作完成后再返回。所以sync函数并不能保证数据一定写入到了磁盘中。在Linux中有一个名为update的守护进程会定期(几秒或几十秒)调用sync函数,来将刷新内核缓冲区。 项目中需要修改配置文件,可能采用如下的方法 char cmd[256] = "\0"; //如下仅是写入一条sed 替换命令, s...

分享嵌入式,移动端,智能应用,数据库等专业板块,记录知识碎片!!! 2912

高分系列卫星轨道、传感器参数等信息

遥感卫星数据简介-高分系列

中遥科 3309

掉电保存文件时fsync和system(“sync“)慎选

的执行时间是一个不确定的因素,取决于多个系统参数和环境因素。在实际应用中,可能需要根据具体情况进行测试和评估。如果需要确保数据同步到磁盘,但又不希望等待太长时间,可以考虑使用fsync或其他更细粒度的同步机制。执行时间长达十几秒甚至更长时间是可能。

qq_25461777的博客 796

告别以太网瓶颈:手把手教你为AI训练集群搭建InfiniBand网络(以NVIDIA DGX A100/H100为例)

本文详细指导如何为AI训练集群搭建InfiniBand网络,解决以太网瓶颈问题,特别针对NVIDIA DGX A100/H100系统。通过硬件选型、网络架构设计和性能调优,显著提升多机多卡训练效率,适用于大规模模型训练场景。

weixin_30336061的博客 311

用Isaac Sim复现经典案例:手把手教你写Python脚本控制机械臂抓取(附避障算法调试心得)

本文详细介绍了如何使用NVIDIA Isaac Sim仿真系统复现机械臂抓取经典案例,包括Python脚本编写、避障算法调试等关键步骤。通过URDF模型导入、关节控制逻辑实现和RMPFlow避障配置等实战演示,帮助开发者快速掌握机器人仿真技术,特别分享了官方文档未提及的实用调试技巧和性能优化策略。

weixin_30632089的博客 407

python sys.modules模块

sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules都将记录这些模块。字典sys.modules对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。 字典sys.modules具有字典所拥有的一切方...

随意的风的专栏 2170

stackelberg博弈_博弈论、多智能体、强化学习(随便记点东西)

多智能体应用场景:已实现:游戏AI。正在努力:UAV,物资运输,快递分发,交通系统。未来:社会学,预测群体行为,城市区域合作,国际关系。博弈论基本定义:玩家集合: 策略集合: 收益函数: 囚徒困境:两智能体矩阵博弈坦白抵赖坦白1,13,0抵赖0,32,2占优策略与最佳应对:上表中两者均具有占优策略,即无论如何都应该选坦白。那么构造下表。坦白抵赖坦白1,13,0抵赖0,12,2对于玩家一来说,坦白...

weixin_39611722的博客 2997

Linux命令sync详解

sync命令是一个简单的Linux命令,用于将文件系统的数据刷写到磁盘。其主要目的是确保所有在内存缓冲区中的数据都被写入磁盘,从而保障数据的持久性和一致性。在进行关机、重启或执行重要文件操作前,使用sync命令可以极大地减少数据丢失的风险。

听风的鱼鱼儿 7596

2.3 MMU Notifier(上):KVM 催生的页表变化通知

探讨了MMU Notifier机制的作用及其在虚拟化等场景中的应用。当CPU页表发生变更(如munmap、页面迁移等操作)时,需要通知拥有"第二套页表"的子系统(如KVM的EPT/NPT、IOMMU、GPU等)失效其映射。MMU Notifier通过订阅-通知机制实现这一功能,核心数据结构包括mmu_notifier订阅对象和回调接口mmu_notifier_ops。当CPU页表修改时,通过mmu_notifier_range描述变更范围,调用订阅者的回调函数进行同步,确保外部MMU与CPU页表一致性。

图形/计算GPU的驱动与虚拟化技术分享园地 1037

深入浅出块I/O子系统(四)请求处理过程

BIO请求处理的流程 函数scsi_request_fn()代码(摘自文件drivers/scsi/scsi_lib.c) (1)static void scsi_request_fn(struct request_queue *q) (2)int scsi_dispatch_cmd(struct scsi_cmnd *cmd) { host->hostt->queuecommand(host, cmd) } (3)struct sas_internal *i sas_queuec

sinat_37817094的博客 1348

函数sync、fsync、fdatasync以及fcntl

文件IO中的sync/fsync、fdatasync函数,同时简单的介绍了fcntl函数的功能

BUG_MeDe的博客 1001

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

linux 同步IO: sync、fsync与fdatasync、sys_sync【转】

本文转自:http://blog.csdn.net/cywosp/article/details/8767327 和 http://www.2cto.com/os/201204/126687.html   传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排...

weixin_34253539的博客 243

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ha-sync-mode_如何启用,优化和调整NVIDIA G-Sync

ha-sync-modeIf you have an NVIDIA graphics card and monitor that both support NVIDIA G-Sync, you can use it to eliminate screen tearing and make the games you play look better. 如果您拥有同时支持NVIDIA G-Sync...

culunyi0802的博客 1858

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

软raid sync_action

在执行“检查”和“修复”,以及可能在执行“重新同步”时,md 将计算发现的错误数量。在“mismatch_cnt”中的计数是重新写入的扇区数量,或者(对于“检查”)本应该重新写入的扇区数量。由于大多数 RAID 级别以页面为单位工作,而不是以扇区为单位,因此这个数量可能会比实际错误数量大,大约是页面中扇区数量的倍数。被清理掉的逻辑发生在md_clean和md_do_sync同步完成后再下check命令的场景下。数据同步的默认单位是64K,也就是128个扇区,也就是说这个值记录的是某次IO操作尺寸。

qq_42931917的博客 677

在Ubuntu上无法通过fcntl设置O_SYNC

<br />如题,看如下测试代码:<br />#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/fcntl.h> #include <stdlib.h> int main(int argc, char *argv[]) { int fd=open("data", O_RDWR|O_CREAT, 0777)

lanseshenhua的专栏 1729

2.6_EL0_SYNC与EL1_SYNC_异常改造

本文分析了ARM64架构中EL0_SYNC异常处理的代码框架及其返回用户空间的流程。EL0_SYNC处理通过读取ESR_EL1寄存器判断异常类型,并跳转到相应分支处理。引入I-pipe补丁后,核心处理逻辑未变,但返回路径增加了判断:若进程处于HEAD域(Xenomai实时进程)则直接返回用户层;否则进入常规返回流程ret_to_user_noirq。该机制实现了实时与非实时进程的差异化处理。

三问Linux社区 302

Profile-sync-daemon 项目安装与使用教程

`profile-sync-daemon` 项目的目录结构如下: ``` profile-sync-daemon/ ├── common/ ├── contrib/ ├── doc/ ├── init/ ├── INSTALL ├── LICENSE ├── Makefile ├── README.md └── ... ``` ### 目录介绍: - **common/**: 包含项目的通用...

gitblog_01188的博客 971

sync 命令介绍和使用案例

命令是一个 Linux 系统中至关重要的工具,用于强制将内存缓冲区中的数据写入磁盘,以确保数据的持久性和一致性. 它主要用于避免数据丢失或损坏,尤其是在关机、重启或执行重要文件操作之前.命令时,系统会等待所有同步操作完成,这可能会导致命令执行时间较长,尤其是在大型文件系统中.命令会增加磁盘 I/O 操作,可能影响系统性能,仅在确保数据安全性非常重要的场景下使用.命令的作用就是强制将这些数据写入磁盘,确保数据的持久存储. 底层实现上,数据同步: 确保所有未写入磁盘的数据都被写入,防止数据丢失.

2849

同一个文件共同读写(open中O_SYNC用法)

现来看二个程序。#include #include #include #include #include #include int main() {     int fd;     if((fd=open("test",O_RDWR|))     {         perror("open");         return -1;     }     lseek(fd,-3,SEEK_END);     char buffer[32]="hello";     sleep

于勇的空间 7356
上一篇: 函数运行时间计算
下一篇: ADB 学习之路
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值