求道者 发表于 2022-1-27 19:59:29

秒杀Win原生esd算法,WIM转ESD,比DISM++快一万倍。

本帖最后由 求道者 于 2022-1-28 16:31 编辑

直接上数据。
time wimlib-imagex export install.wim all install.esd --solid
Using LZMS compression with 24 threads
Archiving file data: 7655 MiB of 7655 MiB (100%) done
wimlib-imagex export install.wim all install.esd --solid4908.95s user 12.25s system 2055% cpu 3:59.39 total
wimlib-imagex info install.esd
WIM Information:
----------------
Path:         install.esd
GUID:         0x45b8ca099098e8da95a39873c617dcf8
Version:      3584
Image Count:    1
Compression:    LZMS
Chunk Size:   131072 bytes
Part Number:    1/1
Boot Index:   0
Size:         3294961694 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 企业版 LTSC
Description:            Windows 10 企业版 LTSC
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27944
File Count:             95478
Total Bytes:            14712361472
Hard Link Bytes:      6315019536
Creation Time:          Thu Jan 27 04:37:08 2022 UTC
Last Modification Time: Thu Jan 27 04:37:10 2022 UTC
Architecture:         x86_64
Product Name:         Microsoft Windows Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no

wimlib-imagex info install.wim
WIM Information:
----------------
Path:         install.wim
GUID:         0x6888efa624775e429b5e30472f67b4c4
Version:      68864
Image Count:    1
Compression:    LZX
Chunk Size:   32768 bytes
Part Number:    1/1
Boot Index:   0
Size:         4170210044 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 企业版 LTSC
Description:            Windows 10 企业版 LTSC
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27944
File Count:             95478
Total Bytes:            14712361472
Hard Link Bytes:      6315019536
Creation Time:          Thu Jan 27 04:37:08 2022 UTC
Last Modification Time: Thu Jan 27 04:37:10 2022 UTC
Architecture:         x86_64
Product Name:         Microsoft Windows Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no


感想就是微软的程序员是什么牛马?
我3900X用DISM++ WIM转ESD,要几个小时。
wimlib只要几分钟……

扩展一下就是WIN本身得有多烂?

5800X的速度,似乎稍微慢点。
time wimlib-imagex export install.wim all install.esd --solid
Using LZMS compression with 16 threads
Archiving file data: 7655 MiB of 7655 MiB (100%) done
wimlib-imagex export install.wim all install.esd --solid3493.17s user 5.70s system 1401% cpu 4:09.65 total


3900X给虚拟机分配12个线程,吃了虚拟机的I/O大打折扣与CPU线程数只有一半的debug,但还是在9分钟里完成了任务。
比DISM++还是快了太多,关键是wimlib转esd不至于把系统完全卡死。dism++转esd 电脑就完全不能动了。
time wimlib-imagex export install_1.wim all install_1.esd --solid
Using LZMS compression with 12 threads
Archiving file data: 7656 MiB of 7656 MiB (100%) done
wimlib-imagex export install_1.wim all install_1.esd --solid5840.16s user 17.37s system 1067% cpu 9:08.93 total

是因为内存不足,内存不足导致系统宕机,然后任务时间无限延长,一般卡死的状态就是由于内存不足,dism不报告这个问题,然后就会导致用户无限受苦,wimlib告诉了我要加内存,我才想起这回事。
内存充足的情况下,两者效率差距60%。

2010laodu 发表于 2022-1-27 20:08:20

楼主厉害

邪恶海盗 发表于 2022-1-27 20:14:33

围观一下,Dism++用的不是Winlib-imagex???

求道者 发表于 2022-1-27 20:18:30

本帖最后由 求道者 于 2022-1-27 20:29 编辑

邪恶海盗 发表于 2022-1-27 20:14
围观一下,Dism++用的不是Winlib-imagex???
我和DISM++作者对过线,让他优化一下压个ESD就要几个小时的问题。
答复就是“微软的原生实现,暂时没打算改,我让他用Winlib,他说他不打算开源,所以打算重写一遍ESD压缩算法的实现,然而……”
依我看还不如开源DISM++,用WIMlib压缩换掉部分实现,独立实现一个压缩算法,实现难度在所有任务中也是中上游的,不是说说就能做到。
就事实而论,这算法效率的差距,不说是差100倍,至少也差了50倍。
用DISM++压缩ESD的痛苦程度,不能说是地狱,只能说是阿鼻叫唤{:1_187:}‘
但凡没差这么多,我都不会发帖。

min_x91 发表于 2022-1-27 20:19:21

厉害

yiwan 发表于 2022-1-27 20:25:00

very good

旁观者清 发表于 2022-1-27 20:29:39

谢谢分享。

Climbing 发表于 2022-1-27 20:37:12

据我印象,wimlib貌似跟微软原生的wimGAPI有兼容性问题。我是在搞wimboot时发现过类似兼容性问题。

速度快了,但不通用,这个问题更严重。https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

2012jiashanni 发表于 2022-1-27 20:41:16

wimlib-imagex export install.wim all install.esd --solid
你这命令行是导出install.wim所有卷为install.esd

求道者 发表于 2022-1-27 20:42:33

本帖最后由 求道者 于 2022-1-27 20:44 编辑

2012jiashanni 发表于 2022-1-27 20:41
wimlib-imagex export install.wim all install.esd --solid
你这命令行是导出install.wim所有卷为instal ...
对,就是WIM TO ESD。
不管过程怎么样,结果是WIM转ESD就行。
我就是嫌微软原生实现太慢了。

求道者 发表于 2022-1-27 20:45:21

Climbing 发表于 2022-1-27 20:37
据我印象,wimlib貌似跟微软原生的wimGAPI有兼容性问题。我是在搞wimboot时发现过类似兼容性问题。

速度 ...

DISM++作为实用工具而言很好用,
但WIM转ESD就是……

求道者 发表于 2022-1-27 21:03:02

生成的镜像能部署。{:1_191:}
以后还是用这个转ESD吧,DISM那速度受不了。

求道者 发表于 2022-1-27 21:04:01

本帖最后由 求道者 于 2022-1-27 21:08 编辑

Climbing 发表于 2022-1-27 20:37
据我印象,wimlib貌似跟微软原生的wimGAPI有兼容性问题。我是在搞wimboot时发现过类似兼容性问题。

速度 ...
说出来你可能不信,我是在Linux下转的ESD。{:1_196:}
日常维护还是不用这个。

bfgxp 发表于 2022-1-27 21:27:44

emmm,我单映像的wim,用dism++转esd到是没那么慢
一会我也测试下wimlib看看

lily9718 发表于 2022-1-28 06:15:52

谢谢分享

尽善尽美 发表于 2022-1-28 07:39:07

本帖最后由 尽善尽美 于 2022-1-28 08:26 编辑

DISM++转化确实慢得很,这么快速,压缩转化后的大小是不是比DISM++转化的要大很多
wimlib-imagex export D:\xxx.wim all D:\xxx.esd --solid --solid-compress=lzms:100

lpsyuntao 发表于 2022-1-28 09:01:53

谢谢分享

求道者 发表于 2022-1-28 09:29:03

尽善尽美 发表于 2022-1-28 07:39
DISM++转化确实慢得很,这么快速,压缩转化后的大小是不是比DISM++转化的要大很多
wimlib-imagex export D ...

这里建议亲进一步测试呢
我是不想用dism++再压了

nttwqz 发表于 2022-1-28 10:11:17

还有这样的事,回头测试一下兼容性如何,看看用WinNTSetup安装系统会不会有问题

求道者 发表于 2022-1-28 10:19:08

nttwqz 发表于 2022-1-28 10:11
还有这样的事,回头测试一下兼容性如何,看看用WinNTSetup安装系统会不会有问题

已经用WinNTSetup安装过了,可以正常部署。

zws0110 发表于 2022-1-28 10:31:12

谢谢分享

求道者 发表于 2022-1-28 12:49:16

Climbing 发表于 2022-1-27 20:37
据我印象,wimlib貌似跟微软原生的wimGAPI有兼容性问题。我是在搞wimboot时发现过类似兼容性问题。

速度 ...

单纯是dism++既不想GNU协议开源,又没有可替换的ESD压缩解压实现罢了,毕竟没人不让用win的api去实现dism的其他功能,只是这压缩算法不能说是狗屎,只能说是逆天。

andyrave 发表于 2022-1-28 13:26:38

DISM有自己的转ESD的命令行   体积减少压缩比未压缩的少1G多的用时20几分钟   


wimlib转ESD   用DSIM命令行不能用   兼容性是个问题

求道者 发表于 2022-1-28 14:12:58

尽善尽美 发表于 2022-1-28 07:39
DISM++转化确实慢得很,这么快速,压缩转化后的大小是不是比DISM++转化的要大很多
wimlib-imagex export D ...

time wimlib-imagex export install_original.esd all install_100.wim --compress=LZX--compress=lzx:100
Using LZX compression with 12 threads
Archiving file data: 7707 MiB of 7707 MiB (100%) done
wimlib-imagex export install_original.esd all install_100.wim --compress=LZX   1868.11s user 17.61s system 846% cpu 3:42.67 total

time wimlib-imagex export install_original.esd all install.wim --compress=LZX
Using LZX compression with 12 threads
Archiving file data: 7707 MiB of 7707 MiB (100%) done
wimlib-imagex export install_original.esd all install.wim --compress=LZX1089.40s user 16.71s system 687% cpu 2:40.97 total

time wimlib-imagex export install.wim all install_100.esd --solid --solid-compress=lzms:100
Using LZMS compression with 12 threads
Archiving file data: 7707 MiB of 7707 MiB (100%) done
wimlib-imagex export install.wim all install_100.esd --solid   6896.91s user 15.13s system 1092% cpu 10:32.61 total

time wimlib-imagex export install.wim all install.esd --solid
Using LZMS compression with 12 threads
Archiving file data: 7707 MiB of 7707 MiB (100%) done
wimlib-imagex export install.wim all install.esd --solid6861.34s user 17.24s system 1089% cpu 10:31.29 total


ls -al
总用量 17782600
drwxrwxrwx 1 manjaro manjaro      4961月 28 14:00 .
drwxrwxrwx 1 manjaro manjaro       40961月 28 14:00 ..
-rwxrwxrwx 1 manjaro manjaro 33038804041月 28 13:58 install.esd
-rwxrwxrwx 1 manjaro manjaro 41452390601月 28 13:26 install.wim
-rwxrwxrwx 1 manjaro manjaro 33027739441月 28 13:48 install_100.esd
-rwxrwxrwx 1 manjaro manjaro 41371106141月 28 13:23 install_100.wim
-rwxrwxrwx 1 manjaro manjaro 3320362162 12月 15 00:00 install_original.esd

ls -alh
总用量 17G
drwxrwxrwx 1 manjaro manjaro4961月 28 14:00 .
drwxrwxrwx 1 manjaro manjaro 4.0K1月 28 14:01 ..
-rwxrwxrwx 1 manjaro manjaro 3.1G1月 28 13:58 install.esd
-rwxrwxrwx 1 manjaro manjaro 3.9G1月 28 13:26 install.wim
-rwxrwxrwx 1 manjaro manjaro 3.1G1月 28 13:48 install_100.esd
-rwxrwxrwx 1 manjaro manjaro 3.9G1月 28 13:23 install_100.wim
-rwxrwxrwx 1 manjaro manjaro 3.1G 12月 15 00:00 install_original.esd


WIM Information:
----------------
Path:         install_original.esd
GUID:         0x6db08e4b2023864e96aea82bb950731c
Version:      3584
Image Count:    1
Compression:    LZMS
Chunk Size:   131072 bytes
Part Number:    1/1
Boot Index:   0
Size:         3320362162 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 Enterprise LTSC 2021
Description:            Windows 10 Enterprise LTSC 2021
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27954
File Count:             95471
Total Bytes:            14765223749
Hard Link Bytes:      6315019536
Creation Time:          Wed Oct 06 13:40:23 2021 UTC
Last Modification Time: Wed Dec 15 02:29:37 2021 UTC
Architecture:         x86_64
Product Name:         Microsoft® Windows® Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no

WIM Information:
----------------
Path:         install_100.esd
GUID:         0xbb700ce778912fd8a55b7f743be96403
Version:      3584
Image Count:    1
Compression:    LZMS
Chunk Size:   131072 bytes
Part Number:    1/1
Boot Index:   0
Size:         3302771162 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 Enterprise LTSC 2021
Description:            Windows 10 Enterprise LTSC 2021
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27954
File Count:             95471
Total Bytes:            14765223749
Hard Link Bytes:      6315019536
Creation Time:          Wed Oct 06 13:40:23 2021 UTC
Last Modification Time: Wed Dec 15 02:29:37 2021 UTC
Architecture:         x86_64
Product Name:         Microsoft® Windows® Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no

WIM Information:
----------------
Path:         install.esd
GUID:         0x2c3af98493bf5d7c53f538f0002cf68a
Version:      3584
Image Count:    1
Compression:    LZMS
Chunk Size:   131072 bytes
Part Number:    1/1
Boot Index:   0
Size:         3303877622 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 Enterprise LTSC 2021
Description:            Windows 10 Enterprise LTSC 2021
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27954
File Count:             95471
Total Bytes:            14765223749
Hard Link Bytes:      6315019536
Creation Time:          Wed Oct 06 13:40:23 2021 UTC
Last Modification Time: Wed Dec 15 02:29:37 2021 UTC
Architecture:         x86_64
Product Name:         Microsoft® Windows® Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no

WIM Information:
----------------
Path:         install_100.wim
GUID:         0xe02be137d6d28830d63017b7111936e0
Version:      68864
Image Count:    1
Compression:    LZX
Chunk Size:   32768 bytes
Part Number:    1/1
Boot Index:   0duct Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no
Size:         4137107832 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 Enterprise LTSC 2021
Description:            Windows 10 Enterprise LTSC 2021
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27954
File Count:             95471
Total Bytes:            14765223749
Hard Link Bytes:      6315019536
Creation Time:          Wed Oct 06 13:40:23 2021 UTC
Last Modification Time: Wed Dec 15 02:29:37 2021 UTC
Architecture:         x86_64
Product Name:         Microsoft® Windows® Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no

WIM Information:
----------------
Path:         install.wim
GUID:         0xbb061919acf632acc05441dba5081977
Version:      68864
Image Count:    1
Compression:    LZX
Chunk Size:   32768 bytes
Part Number:    1/1
Boot Index:   0
Size:         4145236278 bytes
Attributes:   Relative path junction

Available Images:
-----------------
Index:                  1
Name:                   Windows 10 Enterprise LTSC 2021
Description:            Windows 10 Enterprise LTSC 2021
Display Name:         Windows 10 企业版 LTSC
Display Description:    Windows 10 企业版 LTSC
Directory Count:      27954
File Count:             95471
Total Bytes:            14765223749
Hard Link Bytes:      6315019536
Creation Time:          Wed Oct 06 13:40:23 2021 UTC
Last Modification Time: Wed Dec 15 02:29:37 2021 UTC
Architecture:         x86_64
Product Name:         Microsoft® Windows® Operating System
Edition ID:             EnterpriseS
Installation Type:      Client
Product Type:         WinNT
Product Suite:          Terminal Server
Languages:            zh-CN
Default Language:       zh-CN
System Root:            WINDOWS
Major Version:          10
Minor Version:          0
Build:                  19044
Service Pack Build:   1415
Service Pack Level:   0
Flags:                  EnterpriseS
WIMBoot compatible:   no

install_original.esd是从19044.1415.211215-0800.vb_refresh_enterprise_ltsc_2021_x64frev_zh-cn_40e724ac.iso提取的esd,估计是用DISM++压缩的
体积差不多
非说的话,wimlib lzms:100压缩比更高一点。
10500的机子,七彩虹的垃圾SSD,配置比较平民,速度就慢点。
基本你用wimlib,换配置能带来很大的提升。
dism++嘛,懂得都懂。

求道者 发表于 2022-1-28 14:16:26

andyrave 发表于 2022-1-28 13:26
DISM有自己的转ESD的命令行   体积减少压缩比未压缩的少1G多的用时20几分钟   




DISM++估计用了很高的压缩比,但收益非常低,时间成本却加大了不止一点。
DISM自己的默认压缩比似乎比较普通,费时不会那么长。

求道者 发表于 2022-1-28 16:26:05

andyrave 发表于 2022-1-28 13:26
DISM有自己的转ESD的命令行   体积减少压缩比未压缩的少1G多的用时20几分钟   




结合你的用例,和我自己的情况,我忽然意识到了卡到不能自理一般是内存用完了的原因,在将内存加到16g之后,dism++在本用例中耗时16分钟,落后wimlib60%,这个差距就比较合理了,在测试中我发现,可能dism的内存占用要高点,所以非常容易用完内存,然后卡到不能自理,这种情况下就算能完成转换也需要几个小时。

andyrave 发表于 2022-1-28 23:20:30

求道者 发表于 2022-1-28 16:26
结合你的用例,和我自己的情况,我忽然意识到了卡到不能自理一般是内存用完了的原因,在将内存加到16g之 ...

都是在ADK导出只有命令行的PE下压缩的I7的U电源最高性能   内存全部占满    4.7G 压成ESD 差不多3.2G   二十几分钟      WIMLIB也压过   压出来小点DISM命令行解压出错      

oar 发表于 2022-2-9 00:05:27

这年月内存16刚够及格线,32G其实也不好意思的,64G起才是干正活的……

iguaqq 发表于 2022-2-16 17:01:47

厉害

iguaqq 发表于 2022-2-16 17:01:58

从来没有想过这样压缩
页: [1] 2 3
查看完整版本: 秒杀Win原生esd算法,WIM转ESD,比DISM++快一万倍。