最新要闻
- 当前观察:硬盘预读参数变化分析
- 继烧烤后淄博代购也火了:网友都很想去
- “五一”假期高速免费五天!提前出发的过省界收费站时注意时间 环球快播报
- 今日讯!五一这些景点门票已约满:游客注意别跑空
- 3200RPM超高转速 满速运转还不抖!酷冷至尊莫比乌斯120 OC风扇评测 环球报资讯
- 科幻工业风!红魔电竞显示器银翼版来了:极窄边框设计 热点评
- 贵阳市档案馆通过全国示范数字档案馆测试
- 兴齐眼药去年四季度起利润急降:“近视神药”网售被禁影响显现,正式上市时市场恐已成红海
- 7项技术行业唯一!vivo X Fold2今日首销:8999元起
- 五一档票房第一!王一博电影《长空之王》今日上映:歼-20真机硬核亮相_世界热头条
- 热议:四川瓦屋山首次发现猛禽之王:自然界顶级掠食者 海拔4000米以上活动
- 60架C919和40架ARJ21!海航豪购100架国产飞机 环球微头条
- 小鹏G6创意视频被指“侮辱科学家” 创作者发声:绝非侮辱而是致敬
- 证监会:下月公布虚拟交易平台发牌框架
- 一季度新接船舶订单量同比增53%(新数据 新看点) 环球看热讯
- Win10再见!微软确认22H2为终极正式版 系统不再更新:2025年结束支持
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
当前观察:硬盘预读参数变化分析
硬盘通过RAID(raid驱动为megaraid)方式挂载至系统。 修改块设备sdb的预读参数(read_ahead_kb),使用dd命令向块设备写数据,预读参数发生了变化。
问题总结预读参数改变的原因是由于systemd-udevd服务对sd块设备做了IO监听,一旦发生写操作,就会触发on_inotify处理函数重新获取分区信息,重新获取分区信息时会重置预读参数(sd_revalidate_disk函数中重置了预读参数)。修复sd_revalidate_disk函数修改预读参数的规则,可以修复该问题。
问题分析客户反馈:UOS 1032正常、UOS1040异常、麒麟25.2异常,但三者raid驱动版本一致。
(资料图片仅供参考)
根据客户反馈加上预读参数本身与raid驱动无明显关联,排除raid驱动问题。 当前验证思路,先确认预读参数是由谁(内核模块、上层应用)修改的。
上层应用 手动修改预读参数后,去掉预读参数写权限chmod 444 ,预读参数发生变化,排除上层应用主动修改预读参数。 内核模块 定位预读参数read_ahead_kb的位置
static struct queue_sysfs_entry queue_ra_entry = { .attr = {.name = "read_ahead_kb", .mode = 0644 }, .show = queue_ra_show, .store = queue_ra_store, }; static ssize_t queue_ra_store(struct request_queue *q, const char *page, size_t count) { unsigned long ra_kb; ssize_t ret = queue_var_store(&ra_kb, page, count); if (ret < 0) return ret; q->backing_dev_info->ra_pages = ra_kb >> (PAGE_SHIFT - 10); return ret; }
预读参数保存在q->backing_dev_info->ra_pages中,向相关位置添加调试信息,定位改动原因。通过调试信息可知sd_revalidate_disk函数修改了预读参数。
static int sd_revalidate_disk(struct gendisk *disk) { ... ... q->backing_dev_info->ra_pages = max_t(unsigned long, VM_MAX_READAHEAD, ra_kb) * 1024 / PAGE_SIZE; set_capacity(disk, logical_to_sectors(sdp, sdkp->capacity)); sd_config_write_same(sdkp); kfree(buffer); out: return 0; }
查看堆栈信息发现sd_revalidate_disk是通过系统调用运行的(el0_svc为用户态系统调用的入口)
Dec 8 13:13:32 localhost kernel: [ 352.426379] CPU: 79 PID: 1739 Comm: systemd-udevd Not tainted 4.19.90-25.2.v2101.gfb012.ky10.aarch64 #1 Dec 8 13:13:32 localhost kernel: [ 352.436164] Hardware name: Unisyue Technologies Co., Ltd. UNIS Server R3810 G5/RS41M2C9S, BIOS KL4.1.60 12/02/2021 Dec 8 13:13:32 localhost kernel: [ 352.446896] Call trace: Dec 8 13:13:32 localhost kernel: [ 352.449777] dump_backtrace+0x0/0x170 Dec 8 13:13:32 localhost kernel: [ 352.453856] show_stack+0x24/0x30 Dec 8 13:13:32 localhost kernel: [ 352.457598] dump_stack+0xa4/0xe8 Dec 8 13:13:32 localhost kernel: [ 352.461338] sd_revalidate_disk+0x3a4/0x1300 Dec 8 13:13:32 localhost kernel: [ 352.466026] rescan_partitions+0xac/0x3b8 Dec 8 13:13:32 localhost kernel: [ 352.470451] __blkdev_reread_part+0x60/0x88 Dec 8 13:13:32 localhost kernel: [ 352.475048] blkdev_reread_part+0x2c/0x48 Dec 8 13:13:32 localhost kernel: [ 352.479472] blkdev_ioctl+0x498/0xb88 Dec 8 13:13:32 localhost kernel: [ 352.483556] block_ioctl+0x50/0x68 Dec 8 13:13:32 localhost kernel: [ 352.487376] do_vfs_ioctl+0xb0/0x898 Dec 8 13:13:32 localhost kernel: [ 352.491366] ksys_ioctl+0x8c/0xa0 Dec 8 13:13:32 localhost kernel: [ 352.495099] __arm64_sys_ioctl+0x28/0x98 Dec 8 13:13:32 localhost kernel: [ 352.499439] el0_svc_common+0x78/0x130 Dec 8 13:13:32 localhost kernel: [ 352.503603] el0_svc_handler+0x38/0x78 Dec 8 13:13:32 localhost kernel: [ 352.507768] el0_svc+0x8/0x1b0
Comm显示具体应用为systemd-udevd查阅systemd-udevd源码,发现systemd-udev对sd块设备做了IO监听,一旦发生写操作,就会触发on_inotify处理函数重新获取分区信息。 BLKRRPART:重新读取分区表 on_inotify函数调用链为:on_inotify-->synthesize_change-->ioctl(fd, BLKRRPART, 0)
udevd.c:static int synthesize_change(sd_device *dev) { ... ... if (streq_ptr("block", subsystem) && streq_ptr("disk", devtype) && !startswith(sysname, "dm-")) { _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL; bool part_table_read = false, has_partitions = false; sd_device *d; int fd; fd = open(devname, O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK); if (fd >= 0) { r = flock(fd, LOCK_EX|LOCK_NB); if (r >= 0) r = ioctl(fd, BLKRRPART, 0); close(fd); if (r >= 0) part_table_read = true; } ... ...}static int on_inotify(sd_event_source *s, int fd, uint32_t revents, void *userdata) {... ... FOREACH_INOTIFY_EVENT(e, buffer, l) { _cleanup_(sd_device_unrefp) sd_device *dev = NULL; const char *devnode; if (udev_watch_lookup(e->wd, &dev) <= 0) continue; if (sd_device_get_devname(dev, &devnode) < 0) continue; log_device_debug(dev, "Inotify event: %x for %s", e->mask, devnode); if (e->mask & IN_CLOSE_WRITE) synthesize_change(dev); else if (e->mask & IN_IGNORED) udev_watch_end(dev); } return 1; }static int main_loop(Manager *manager) {... ... r = sd_event_add_io(manager->event, &manager->inotify_event, manager->fd_inotify, EPOLLIN, on_inotify, manager); if (r < 0) return log_error_errno(r, "Failed to create inotify event source: %m");... ...}
继续跟踪sd_revalidate_disk的历史提交记录发现,ra_pages的修改是在64cf457219acf8e3524530af064784f5677682fe版本中提交的,目的是采用硬盘VPD信息的OPTIMAL TRANSFER LENGTH(最优传输长度)来调整read_ahead_kb。
导致问题的补丁对sd_revalidate_disk函数进行历史追溯,发现修改预读参数的功能是在64cf457219acf8e3524530af064784f5677682fe中提交的
From 64cf457219acf8e3524530af064784f5677682fe Mon Sep 17 00:00:00 2001From: huhai Date: Tue, 3 Mar 2020 16:17:42 +0800Subject: [PATCH] KYLIN: block/sd: incrase read_ahead_kb for FC-SANMIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bit使用硬盘VPD信息的OPTIMAL TRANSFER LENGTH(最优传输长度)来调整read_ahead_kbSigned-off-by: huhai Signed-off-by: Jackie Liu --- drivers/scsi/sd.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.cindex f9d02f638c43..88958c7e5330 100644--- a/drivers/scsi/sd.c+++ b/drivers/scsi/sd.c@@ -3130,7 +3130,7 @@ static int sd_revalidate_disk(struct gendisk *disk) struct request_queue *q = sdkp->disk->queue; sector_t old_capacity = sdkp->capacity; unsigned char *buffer;- unsigned int dev_max, rw_max;+ unsigned int dev_max, rw_max, ra_kb; SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, "sd_revalidate_disk\n"));@@ -3199,9 +3199,12 @@ static int sd_revalidate_disk(struct gendisk *disk) if (sd_validate_opt_xfer_size(sdkp, dev_max)) { q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks); rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks);- } else+ ra_kb = sdkp->opt_xfer_blocks;+ } else { rw_max = min_not_zero(logical_to_sectors(sdp, dev_max), (sector_t)BLK_DEF_MAX_SECTORS);+ ra_kb = VM_MAX_READAHEAD;+ } /* Do not exceed controller limit */ rw_max = min(rw_max, queue_max_hw_sectors(q));@@ -3217,6 +3220,8 @@ static int sd_revalidate_disk(struct gendisk *disk) sdkp->first_scan = 0;+ q->backing_dev_info->ra_pages = max_t(unsigned long, VM_MAX_READAHEAD,+ ra_kb) * 1024 / PAGE_SIZE; set_capacity(disk, logical_to_sectors(sdp, sdkp->capacity)); sd_config_write_same(sdkp); kfree(buffer);-- 2.23.0
解决方案修改内核代码,硬盘初始化,首次进行扫描时配置最佳预读参数,之后重读分区信息时不再修改预读参数。
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.cindex 7914f304255d..8e9d9d3065df 100644--- a/drivers/scsi/sd.c+++ b/drivers/scsi/sd.c@@ -3235,10 +3235,11 @@ static int sd_revalidate_disk(struct gendisk *disk) q->limits.max_sectors > q->limits.max_hw_sectors) q->limits.max_sectors = rw_max;- sdkp->first_scan = 0;+ if (sdkp->first_scan)+ q->backing_dev_info->ra_pages = max_t(unsigned long, VM_MAX_READAHEAD,+ ra_kb) * 1024 / PAGE_SIZE;- q->backing_dev_info->ra_pages = max_t(unsigned long, VM_MAX_READAHEAD,- ra_kb) * 1024 / PAGE_SIZE;+ sdkp->first_scan = 0; set_capacity(disk, logical_to_sectors(sdp, sdkp->capacity)); sd_config_write_same(sdkp); kfree(buffer);-- 2.23.0
关键词:
当前观察:硬盘预读参数变化分析
继烧烤后淄博代购也火了:网友都很想去
“五一”假期高速免费五天!提前出发的过省界收费站时注意时间 环球快播报
今日讯!五一这些景点门票已约满:游客注意别跑空
3200RPM超高转速 满速运转还不抖!酷冷至尊莫比乌斯120 OC风扇评测 环球报资讯
科幻工业风!红魔电竞显示器银翼版来了:极窄边框设计 热点评
贵阳市档案馆通过全国示范数字档案馆测试
Linux恢复文件双手锏|全球即时
世界热讯:基于Java开发的数字知识库,支持全文检索、知识图谱和工作流审批,太强大了
微资讯!聊一聊GIS之家团队数据案例源码共享以及在线体验
当前热讯:JasperReports教程_编程入门自学教程_菜鸟教程-免费教程分享
安装Amos结构方程模型分析软件的方法 环球热闻
兴齐眼药去年四季度起利润急降:“近视神药”网售被禁影响显现,正式上市时市场恐已成红海
7项技术行业唯一!vivo X Fold2今日首销:8999元起
五一档票房第一!王一博电影《长空之王》今日上映:歼-20真机硬核亮相_世界热头条
热议:四川瓦屋山首次发现猛禽之王:自然界顶级掠食者 海拔4000米以上活动
60架C919和40架ARJ21!海航豪购100架国产飞机 环球微头条
小鹏G6创意视频被指“侮辱科学家” 创作者发声:绝非侮辱而是致敬
证监会:下月公布虚拟交易平台发牌框架
每日聚焦:Docker获取Let`s Encrypt SSL 证书
天天热讯:【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
一季度新接船舶订单量同比增53%(新数据 新看点) 环球看热讯
Win10再见!微软确认22H2为终极正式版 系统不再更新:2025年结束支持
价保618!真我GT Neo5降了:1TB版卖3299元 世界快报
比Wi-Fi 6快4倍!华为首测Wi-Fi 7:真机网速狂飙4.3Gbps 当前热门
全球快看:越来越黑化!《变形金刚1-7》女主角颜值变化 网友叹息黑人赢麻了
天风证券:4月第3周新能源汽车订单明显改善,车展有望带动终端需求回升
“欧佩克+”减产倒计时 中国能源供给如何摆脱新变数|环球今亮点
天天热文:北大校训是什么(北京大学的校训是什么)
新一轮国内油价今日调整 有望下调0.11元/升!中石油:油价过低不好 世界关注
世界热头条丨同事结婚行政到工位挨个收礼金被吐槽 还不请吃饭:网友热议别强迫
世界快看点丨史诗级升级!曝iPhone 15 Pro支持雷电3
世界热议:学系统集成项目管理工程师(中项)系列13b_人力资源管理(下)
当前速递!文移民合同范本(推荐4篇)
分享无人回应 爸爸退了家庭群:媒体点评称这是最起码尊重_每日信息
pandas 常见函数的使用 环球速讯
全球微动态丨[MoeCTF 2021]地狱通讯
《飞链云真实AI模特解决方案》
超越美国 我国核电机组2030年将达世界第一:第四代核电已有探索
内地引进!《变形金刚7:超能勇士崛起》正式预告发布:宇宙大帝来袭 焦点简讯
世界关注:国外品牌光环不再 你敢信车展排队半小时是为了看国产车?
7nm不让用!飞腾腾云5000C CPU公布:80核心变64核心 性能大大缩水_天天速递
锐龙7000多次烧毁 AMD闪电锁定“凶手”!果然猜对了
确山警方:一村(格)一警走访入户 筑牢安全防范根基 世界要闻
directx9.0c是什么软件 directx是什么软件_焦点关注
全球观天下!“逃离东北”的东北医生,多家医院因报名不足缩减岗位
2023国内外毫米波雷达行研分析 全球快播报
全球看热讯:前三月卖了55.2万辆车 比亚迪一季度营收破1200亿
每日播报!健身博主自曝因压力长六颗子宫肌瘤 专家:子宫肌瘤“偏爱”这3种人
《美猴王》发布剧照被吐槽丑 大圣更像大马猴:周星驰就这水平?
2023国内外毫米波雷达行研分析|天天速递
长沙雨花区坚持以稳定促发展 倾力为民解忧
腾讯代理!《无畏契约》国服5月2日开放下载:核显都能玩
快播:新能源汽车卖疯了 比亚迪一季度利润大涨410%:问鼎全球销冠
史上最大!苹果开发14寸新iPad:操作系统前所未有|全球今日报
太拼!春假首日孩子们在高铁上刷卷子:杭州小学生还要霸占北京景点
旅美大熊猫“乐乐”死因报告发布:心脏病变可能是主因
世界快报:热门中概股美股盘前涨跌不一,有道跌超6%
oop第二次作业 环球新要闻
Java中的Lambda详细解读
Linux再学!_全球简讯
10 如何表示虚拟内存
焦点快播:lua元表、元方法
世界即时看!知识产权保护为“中国制造”保驾护航 助力企业“走出去”
AI生成《原子之心》冰箱姐姐:身材超火辣!-全球快看点
天天观热点:AMD Zen4+RDNA3加持最强掌机!ROG Ally价格泄露:性能堪比PS5
《王国之泪》大量实机截图:菜谱来了!还有抽奖玩法-天天快报
全球首批机器受精试管婴儿出生:用PS5手柄操控机器人受精
OPPO第一季度销量登顶!用户点赞:售后非常好
武功县气象台发布大风蓝色预警【Ⅳ级/一般】【2023-04-27】
每日动态!nginx出现504错误的原因分析及解决
商品日报(4月27日):宏观面担忧加剧 原油系集体重挫|精彩看点
买皮肤也能“分期”了:《英雄联盟》加入点券分期付款功能
【世界报资讯】一次购买喝到爽!冻颜密码椰汁临期大促:9.9元/大瓶超值
雷军微博调研!米粉选出最喜欢的手机:小米13 Ultra排第二
每日消息!国产武侠《侠乂行》获支持:Intel发布4335显卡驱动
全球微资讯!中国空间站还能扩展:180吨级六舱合体、还可商业旅游
生存整个夜晚什么时候出 公测上线时间预告
全球焦点!REITs市场价格承压 长期投资价值回归
债市日报:4月27日_消息
好玩的奇迹mu手游有哪些 十大好玩的奇迹mu手游推荐
环球快消息!你的外卖“从天而降” 美团外卖无人机正式运行:15分钟内送达
环球即时看!日本又一核电站发生冷却水泄漏 电力公司回应:不会对外界有影响
专家呼吁企业增加带薪年假 称比调休更重要:5天太少
搭载卫星通信的手机盘点!它们都“捅破天”了:用一次续一升 前沿热点
焦点快报!1099元 微星推出G27C4X曲面屏:250Hz电竞高刷
当前快报:华为全屋智能重磅亮相AWE,以全空间、全场景、黑科技“打开空间之门”
led的点亮和流水灯的制作
pta第四次到第六次题目集_全球新资讯
记录-有意思的气泡 Loading 效果-世界微头条
Gitblit在Windows服务器下搭建及使用_微头条
当前观察:接单日记(二)SMTP发送邮件
今年就业形势稳中有升 前3个月城镇新增就业297万人|世界看点
高铁车票买到了吗?五一预计发送旅客1.2亿人次:远超2019|世界讯息
玩家吐槽腾讯《全境封锁2》太肝:不充钱能肝到死!|全球快看点
世界聚焦:当贝X5激光投影仪视频评测:2450CVIA高亮度够震撼 可媲美OLED电视
全球热讯:好价速囤:特仑苏纯牛奶2.9元/盒发车(商超6元)
丰田bZ4X即将“解除封印”!OTA后一天可快充4次:直接翻倍
真空休眠科技+嵌入式 海信真空璀璨503新品冰箱首发-视焦点讯
进程