ABC*_*MMM 17 windows benchmarks windows-subsystem-for-linux
想请教一下在同一台电脑上测试大型CAE仿真的问题,有以下两种情况。
两种情况下的计算速度几乎相同还是不同?
Ilm*_*nen 20
您的模拟软件很可能受 CPU 限制或内存限制。对于此类工作负载,人们只会看到在“裸机”或 WSL(或任何其他兼容层或使用本机执行的 VM)内部运行代码之间的任何显着差异,因为在任何一种情况下,操作系统大多只是待命而仿真代码直接在 CPU 上运行。
但是,也有可能您的模拟至少部分受 I/O 限制,这就是可能出现差异的地方。显然,WSL(目前)有一个相当慢的文件系统接口层,可以显着减慢磁盘 I/O。*也就是说,虽然磁盘 I/O 可能是多种批量数据处理任务的主要瓶颈,但“模拟”通常不应该把大部分时间花在阅读和编写文件上。如果是,您可能需要考虑从 RAM 磁盘(例如本机** Linux 上的 tmpfs)运行它,以避免不必要的物理磁盘访问。
在任何情况下,唯一可以确定的方法是在两种环境中测试您的模拟并确定运行所需的时间。但是,在此之前,您可能需要查看现有的基准测试,例如Phoronix 从 2018 年 2 月开始的 WSL vs. Docker vs. VirtualBox vs. native Linux 性能基准测试,并检查对相同组件施加压力的任何测试的结果系统就像您的模拟一样。
(FWIW,Phoronix 结果似乎大多符合我上面概述的一般原则,尽管有一些值得注意的奇怪之处,例如 VirtualBox 在一些 I/O 限制基准测试中明显优于原生 Linux,这显然是由于其虚拟磁盘并不总是立即同步数据到物理磁盘。我上面没有注意到的一个潜在相关问题是,即使在裸硬件上运行时,基准测试也显示不同主机环境之间以及不同 Linux 发行版之间的多线程 OpenMP 性能存在显着差异。事后看来,这并不奇怪,因为线程和 IPC 是由内核处理的。我猜想发行版之间的大部分差异可能归结为不同的运行时和/或编译时内核调整参数。)
*) 根据2016 年的这篇 MSDN 博客文章,WSL 中实际上有两个文件系统接口组件:VolFs,它通过 NTFS 密切模拟本地 Linux 文件系统语义,用于挂载 eg /and/home和 DrvFs,它主要提供类似 Windows 的语义并用于通过/mnt/c等访问主机 Windows 驱动器。如果您的软件不特别需要本机 Linux 文件系统功能(如指向同一文件的多个硬链接),将其配置为将其数据文件存储在 DrvFs 文件夹中可能会提高文件访问性能WSL。
**) 根据2017 年 5 月的Reddit 帖子,WSL 上的“当前使用磁盘模拟 tmpfs”。除非去年发生了一些变化,否则这可能意味着在 WSL 上使用 tmpfs 不会比使用普通的磁盘文件系统带来性能优势。
Win*_*nix 12
Windows 中的 Ubuntu(WSL - 2017 秋季创作者更新)肯定比 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: CPU benchmarking utility for Linux,我在 Linux 和 Windows 上的 Ubuntu 16.04 上运行了测试。在 Linux 上大约 24 秒在 Windows 10 版本 1709 上大约 31 秒。Linux 快 6 秒或大约 25%。但是,我刚刚将 Windows 10 升级到版本 1803(Redstone 4 aka 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
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
注意: 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 秒而不是 5 秒即可显示 Bash 启动画面。CPU 基准测试现在与 Linux 相当。
想一想 - 在 WSL 中,您的计算机正在运行完整的图形 Windows 系统(这首先是一个可怕的资源猪)加上 Ubuntu 子系统。在本机 Ubuntu 中,它只运行 Ubuntu。
| 归档时间: |
|
| 查看次数: |
10294 次 |
| 最近记录: |