我想问一个有关在以下两种情况下在同一台计算机上测试大型CAE仿真的问题。
- 纯Ubuntu系统
- Windows 10(WSL)中的Ubuntu系统
两种情况下的计算速度几乎相同还是不同?
我想问一个有关在以下两种情况下在同一台计算机上测试大型CAE仿真的问题。
两种情况下的计算速度几乎相同还是不同?
Answers:
仿真软件很可能是受CPU限制或受内存限制的。对于此类工作负载,除了在“裸机”上或在WSL(或使用本机执行的任何其他兼容层或VM)内部运行代码之间,不会看到任何显着差异,因为在两种情况下,操作系统大多只是待命。仿真代码直接在CPU上运行。
但是,您的模拟也可能至少部分受I / O约束,这可能会导致差异。显然,WSL(当前)具有相当慢的文件系统接口层,可以大大降低磁盘I / O的速度。*也就是说,尽管磁盘I / O可能是许多批量数据处理任务的主要瓶颈,但“模拟”平时应不花费其大部分的时间读取和写入文件。如果是,请考虑从RAM磁盘(例如,本机** Linux上的tmpfs)运行它,以避免不必要的物理磁盘访问。
无论如何,唯一可以确保的方法是在两种环境中以及时间上测试您的仿真运行时间。但是,在此之前,您可能需要看一下现有的基准测试,例如Phoronix从2018年2月开始的WSL,Docker,VirtualBox和本地Linux性能基准测试,并检查所有强调相同组件的测试结果系统的仿真。
(FWIW,Phoronix的结果似乎基本符合我上面概述的一般原则,尽管在一些I / O绑定基准测试中有一些明显的奇怪之处,例如VirtualBox在性能上显然胜过本机Linux,这显然是因为其虚拟磁盘并不总是立即同步数据我没有在上面提到的一个潜在的相关问题是,基准测试显示,即使在裸机上运行,不同主机环境之间以及不同Linux发行版之间的多线程OpenMP性能也存在显着差异。这并不奇怪,因为线程和IPC是由内核处理的。我猜那里的发行版之间的许多差异可能归结为不同的运行时和/或编译时内核调整参数。)
*)根据2016年的MSDN博客文章,WSL中实际上有两个文件系统接口组件:VolFs,它通过NTFS紧密模拟本机Linux文件系统语义,并用于挂载eg /
和/home
; DrvFs,其提供了大多数类似于Windows的语义并用于通过/mnt/c
等访问Windows主机驱动器。如果您的软件不特别要求本机Linux文件系统功能(如指向同一文件的多个硬链接),则对其进行配置以将其数据文件存储在DrvFs文件夹中可能会提高文件访问性能。 WSL。
**)根据2017年5月的Reddit线程,WSL上的“ tmpfs当前正在使用磁盘进行仿真”。除非去年发生了任何变化,否则可能意味着在WSL上使用tmpfs不会比在普通磁盘上使用文件系统带来任何性能上的好处。
-O3 -march=haswell
,诸如此类。我不知道Clear Linux实际上用来构建其内核的是popcnt
什么,但是也许BMI2 / //可以在glibc和内核方面产生可测量的不同。)不过,我没有从AVX中受益,因为内核避免了触摸FPU寄存器,除非使用诸如软件RAID5 / 6错误校正数据之类的特定代码。)
Windows中的Ubuntu(WSL-2017 Fall Creators Update)绝对比Linux环境中的“纯” Ubuntu慢。
例如,与Ubuntu 16.04相比,Windows 10中的屏幕绘画时间要长很多倍,也就是说,您实际上可以在Windows 10中看到光标移动:
WSL Bash初始屏幕绘制大约需要5秒钟。相比之下,在Ubuntu 16.04中,相同的启动屏幕大约需要1 1/2秒:
第一部分显示屏幕I / O的速度如何,但是CPU基准测试又如何呢?
通过这个Ask Ubuntu Q&A:Linux的CPU基准测试实用程序,我在Linux和Windows的Ubuntu 16.04上进行了测试。在Linux上大约24秒,在Windows 10版本1709上大约31秒。Linux快6秒或快25%。但是我刚刚将Windows 10升级到了版本1803(Redstone 4又名Spring Creators 2018年4月更新),它花费了24秒,与Linux相同。
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.5065s
total number of events: 10000
total time taken by event execution: 23.5049
per-request statistics:
min: 2.13ms
avg: 2.35ms
max: 8.52ms
approx. 95 percentile: 2.76ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.5049/0.00
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 30.5350s
total number of events: 10000
total time taken by event execution: 30.5231
per-request statistics:
min: 2.37ms
avg: 3.05ms
max: 6.21ms
approx. 95 percentile: 4.01ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 30.5231/0.00
$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 23.7223s
total number of events: 10000
total time taken by event execution: 23.7155
per-request statistics:
min: 2.21ms
avg: 2.37ms
max: 4.53ms
approx. 95 percentile: 2.73ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 23.7155/0.00
注意: 2018年的Windows 10春季更新(称为Redstone 4)于5月9日(4天前)发布,我将尽快安装它以查看改进。无疑有很多。我知道我感兴趣的一个地方是能够cron
在启动时运行作业。我需要自动每日备份到gmail.com。
注意2:我刚刚安装了Windows 10 Build 1803(2018年4月Spring Creators Update AKA Redstone 4),并且屏幕绘制要快得多。现在仅3秒钟即可显示Bash初始屏幕,而不是5秒。现在,CPU基准与Linux相当。
考虑一下-在WSL中,您的计算机正在运行完整的图形Windows系统(首先是可怕的资源消耗)以及Ubuntu子系统。在本机Ubuntu中,它仅运行Ubuntu。
pstree
或ps auxw
,很显然所有所有进程都仍然有效。(或者top
按M键以按内存消耗排序)。
systemd
它不能像SysV一样工作init
。此注释的较早部分是假装您正在运行5或10年历史的Linux发行版,并带有老式的init
设置。)但是,是的,退出X会话并停止X11 / GDM将会释放资源,特别是在没有交换空间或桌面出现垃圾的情况下,即使“空闲”时也会频繁唤醒。
我不知道这是否会特别影响您的仿真,但可能会:
这意味着,如果您的仿真使用共享内存(请考虑/dev/shm
),它可能会变慢和/或损坏存储设备!而性能损失来自多个层面:
文件系统驱动程序
存储驱动程序
储存媒体
但是,如果不这样做,那么性能应该类似于裸机Ubuntu(假定没有其他I / O,就像其他人提到的那样)。