已掉线,重新登录

首页 > 绿虎论坛 > 电脑 > 软件 (发帖)

标题: 为啥天翼云盘要以 30 GB/hour 的速度往 C 盘写东西?(保存目录在 D 盘)

作者: @Ta

时间: 2022-12-20

点击: 173

任务管理器界面

起因:任务管理器显示,天翼云盘以高于网络的速度,往硬盘写东西

tasker.webp(8.32 KB)

到性能页一看,C 盘正以 10 MB/s 左右的速度被写东西。然而,我的数据保存目录在 D 盘啊。。

tasker2.webp(25.6 KB)

资源监视器界面

打开资源监视器,发现天翼云盘在实时往 C 盘写数据库和 C:\$LogFile。。

perfmon.webp(44.82 KB)

增删文件很频繁

打开天翼云盘的数据目录,发现增删文件很频繁。。(下图是 GIF 动画)

explorer.gif(114.01 KB)

为啥这些下载软件,都这么吃(看起来没必要浪费的)资源呢?


[隐藏样式|查看源码]


『回复列表(16|隐藏机器人聊天)』

2.

@卷心菜,感觉 C:\$LogFile,或者 52 KB 的 xxx.db,都不是分段临时文件呀。。

(/@Ta/2022-12-20 08:17//)

3.

自动同步?
小米MIX2s(白)

(/@Ta/2022-12-20 09:16//)

4.

@天蓝,没,只是下载别人分享的文件。

为啥自动同步会写 C:\$LogFile 或 52 KB 的 xxx.db 呢?

(/@Ta/2022-12-20 15:47//)

5.

@无名啊,猜测的,之前听说同步盘会先把文件存在C盘的某个目录
小米MIX2s(白)

(/@Ta/2022-12-20 23:06//)

6.

@天蓝,有些软件应该是这样(TEMP 目录?)

但你看帖子第三张图(附在下面了),天翼云盘应该直接写入目标文件了D:\天翼云盘下载\xxx.rar.ecdl

perfmon.webp(44.82 KB)

(/@Ta/2022-12-20 23:10//)

7.

@天蓝,另外,帖子第二张图(如下)显示,12 MB/s 的写入速度,固态盘 C:\ 繁忙程度就有近 50% 了

我觉得应该是大量随机写入导致的。顺序写入的话,可以参考 D:\E:\ 普通硬盘,也是 7~8 MB/s 的速度,但占用小的很

tasker2.webp(25.6 KB)

(/@Ta/2022-12-20 23:17//)

8.

@卷心菜@天蓝,感觉你们可能是对的,天翼云盘应该有分段下载

下载一个 4 GB 的文件,天翼云盘可能干了啥?

  • 被分了 18W 份进行下载,且每一份都有一个单独的临时文件
  • 反反复复开事务写一个 52 KB 的数据库 66W
  • 读写配置文件 47W
  • 写目标文件 1500 次
  • 还有个 35W 次的,对程序目录的操作,我看不懂。。

SandBoxie 来拦截文件操作,并分析日志

我最近发现,新版的 SandBoxie-Plus 支持跟踪沙盘内程序的文件操作,也能导出日志(图附在文末)

我拦截了天翼云盘对 C 盘的操作,花了 13 分钟下载了一个 4 GB 的文件,然后分析了日志。

下载一个 4 GB 的文件,要操作约 170WC: 盘不相干的)文件?!

下列 Shell 命令分析了操作次数最多的文件列表(只列出至少操作了 2 次的)

$ awk -F$'\t' -v OFS=$'\t' '$5 ~ /^File/{arr[$7]++} END{for (k in arr) if (arr[k] > 1) print arr[k], k}' sandboxie.log | sort -rn
666140  \Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\transManNew_###########@189.cn.db-journal
470862  \Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\setting.xml
353936  \Device\HarddiskVolume3\Program Files (x86)\ecloud
1544    \Device\HarddiskVolume9\??????\????????\????????.part11.rar
23      \Device\HarddiskVolume3\Program Files (x86)\ecloud\Config\ecloud\transfercfg.xml
22      \Device\HarddiskVolume3\Program Files (x86)\ecloud\eCloud.exe
18      \Device\HarddiskVolume3\WINDOWS\System32\drivers\etc\hosts
11      \Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\setting.xml.tmp
11      \Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud
6       \Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\LogFileTransfer_###########@189.cn.db-journal
4       \Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\userinfo.xml
2       \Device\HarddiskVolume9\??????\????????\????????.part11.rar.ecdl
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_ZNx3dAAodr46ERcahHyp
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_z84dXqNPNdgIWChWt1PM
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_Z2RJUJnPusih593Oxc9F
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_ylQaBzpTKmd9O7nXb447
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_XaAabe9g3PxVgRtbBPff
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_X2XEpRBBSfbNoRlXyCSa
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_VW5XBHbCfAMSHQboxLR0
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_uSrTPYjHvBhmRWHVahW7
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_OoWej1Tem5f3eyFM0xyO
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_l4KBl48XABfJGdxQLHQJ
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_hwMfgrAxJ1ifutFS7Zs7
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_gwQmbdE13cTjIEocCywc
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_fycm3JVGoHpIcdEheQjT
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_FFAoGqQPa3edwBPR7Aoq
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_FeRyO8ovcavG2oT4xNoB
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_e6hlUdnjH9pECYPs60um
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_dEAgSch6p3LebI8qNb4z
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_CaGkTSpdXxTc9IGUmn5W
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_bzsMzCbnGelcuBGfSdZ4
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_a4mcJBcNVIdv4QIAHp0Z
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_8Md9F6uef9YdfbLvtPR6
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_80hINpkIcbPTFAqMKBqc
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_3TdEJaFs7Beu13hhHD3q
2       \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_1ZeoSTTO9YqtVTjmAAWg

临时目录里,约有 18W 个诸如 \Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_xxx 这样的临时文件:

$ awk -F$'\t' '$5 ~ /^File/' sandboxie.log | grep -F '\Device\HarddiskVolume3\Users\wuxun\AppData\Local\Temp\etilqs_' | wc -l
176974

附图

SandBoxie-Plus 跟踪日志图:

sandboxie.webp(23.53 KB)

(/@Ta/2022-12-21 08:57//)

9.

@无名啊$LogFile不是真实的文件,它是NTFS意外断电恢复日志。读写它的操作由NTFS驱动程序自动完成,应用程序无法控制。在对文件系统进行结构更改(创建文件、删除文件、文件大小变更)时,会伴随$LogFile的读写。只改变文件的内容不改变大小通常不需要读写它。
https://www.dgxue.com/huifu/203.html

至于.db-journal,它是写入SQLite数据库(.db文件)时产生的回滚日志,也用于意外断电的数据恢复。它由SQLite数据库引擎自动产生,应用程序可以把它设为不自动删除,这样会减少重新创建文件的开销(对$LogFile的读写也会减少)。
https://blog.csdn.net/mozart_cai/article/details/26815339

总的来说,应用程序只是在读写自己的SQLite数据库,但是因为该数据库默认每次写入都自动创建删除.db-journal文件,所以在NTFS的$LogFile日志上产生了意料之外的写入开销。这可以认为是日志文件系统的写入放大效应。

(/@Ta/2022-12-21 12:26//)

10.

@无名啊,顺便一提,由于你的内存紧缺(80%),所以这张图里的12MB/s也有一部分可能是在读写页面文件(C:\pagefile.sys)。

20221221122940-1671596980854-link.img.jpg(25.6 KB)

(/@Ta/2022-12-21 12:36//)

11.

@老虎会游泳

  1. $LogFile 是类似 MySQLredo logSQLiteWAL 吗?顺序写入的?

那 C 盘 40% 占用的主要原因,应该不是 $LogFile,而是其他的随机写入导致的

  1. 老虎看下 8 楼,天翼云盘还在 13 分钟内操作了 18W 个临时文件呢。。还频繁读写 47W 次设置文件?(不知我对 SandBoxie 日志的理解是否正确)
(/@Ta/2022-12-21 13:02//)

12.

@无名啊

  1. $LogFile的设计目的是redo log,至于它的具体实现细节,我没有资料。
  2. 哦,这也会造成频繁读写$LogFile
(/@Ta/2022-12-21 13:19//)

13.

@老虎会游泳,我把这 13 分钟内,沙箱的日志整理了下(只留下对文件的操作,省略注册表等。抹掉了账号信息)

老虎若是愿意瞅瞅,可以下载:sandboxie.log.xz(4.89 MB)(解压完 200 MB 左右)

预览:

07:58:12.051	eCloud.exe	14012	16280	File (U)	Open (2) 	\Device\HarddiskVolume9\??????\????????\????????.part11.rar.ecdl	
07:58:12.051	eCloud.exe	14012	16280	File (U)	(2) 	\Device\HarddiskVolume3\Program Files (x86)\ecloud\Config\ecloud\transfercfg.xml	
07:58:12.051	eCloud.exe	14012	16280	File (U)	(2) 	\Device\HarddiskVolume3\Program Files (x86)\ecloud\eCloud.exe	
07:58:12.051	eCloud.exe	14012	16280	File (U)	(2) 	\Device\HarddiskVolume3\Program Files (x86)\ecloud\Config\ecloud\transfercfg.xml	
07:58:12.066	eCloud.exe	14012	16280	File (U)		\Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud	
07:58:12.066	eCloud.exe	14012	16280	File (U)		\Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\setting.xml.tmp	
07:58:12.066	eCloud.exe	14012	16280	File (U)		\Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\setting.xml	
07:58:12.129	eCloud.exe	14012	16280	File (U)	(2) 	\Device\HarddiskVolume3\Program Files (x86)\ecloud\Config\ecloud\transfercfg.xml	
07:58:12.129	eCloud.exe	14012	16280	File (U)	(2) 	\Device\HarddiskVolume3\Users\wuxun\AppData\Roaming\ecloud\setting.xml	
07:58:12.129	eCloud.exe	14012	16280	File (U)		\Device\HarddiskVolume3\WINDOWS\System32\drivers\etc\hosts	
(/@Ta/2022-12-21 13:20//)

14.

@无名啊,现在天翼云盘 还会这样吗?我打算开始用了

(/@Ta/2025-04-20 10:48//)

15.

@胡椒舰长,不知道,我对他们改了不抱希望,毕竟对他们有害无利(损伤的又不是他们的硬盘,投入几天程序员工资改了,又不会多挣钱)。。

如果你对此感到担忧的话,推荐你花几分钟:

  1. 开个内存盘(如 Z: 盘)
  2. Sandboxie 重定向保存目录设为 Z:
  3. Sandboxie 设置允许对 D: 盘的写入(或你设置的其他保存路径)
  4. Sandboxie 内运行天翼云盘,让沙箱来将云盘对 C: 盘的写入,重定向到内存盘里,但又放开对 D: 盘的写入
(/@Ta/2025-04-20 11:59//)

16.

@无名啊,这样的话,是不是用alist挂载效果好点

(/@Ta/2025-04-20 12:01//)

17.

@胡椒舰长,也没咋用过诶。。但第三方实现应该都不差吧,没有项目压力,可以精雕细琢。。

(/@Ta/2025-04-20 12:52//)

回复需要登录

6月29日 02:32 星期天

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1