다음 두 가지 상황에서 동일한 컴퓨터에서 대규모 CAE 시뮬레이션을 테스트하는 방법에 대한 질문을하고 싶습니다 .
- 순수한 우분투 시스템
- Windows 10 (WSL)의 우분투 시스템
두 경우 모두 계산 속도가 거의 같습니까?
다음 두 가지 상황에서 동일한 컴퓨터에서 대규모 CAE 시뮬레이션을 테스트하는 방법에 대한 질문을하고 싶습니다 .
두 경우 모두 계산 속도가 거의 같습니까?
답변:
시뮬레이션 소프트웨어는 CPU 바운드 또는 메모리 바운드 일 가능성이 높습니다 . 이러한 워크로드의 경우 "베어 메탈"또는 WSL 내부 (또는 기본 실행을 사용 하는 다른 호환성 계층 또는 VM) 에서 코드를 실행하는 것 사이에 큰 차이를 볼 수 있습니다. 시뮬레이션 코드는 CPU에서 직접 실행됩니다.
그러나 시뮬레이션이 적어도 부분적으로 I / O 바운드이고 차이가 발생할 수 있습니다. 분명히 WSL (현재)은 디스크 I / O를 상당히 느리게 할 수있는 다소 느린 파일 시스템 인터페이스 계층을 가지고 있습니다. * 즉, 디스크 I / O는 많은 종류의 벌크 데이터 처리 작업에서 중요한 병목 현상이 될 수 있습니다. 일반적으로 파일을 읽고 쓰는 데 대부분의 시간을 소비 해서는 안됩니다 . 귀하의 경우, 불필요한 물리적 디스크 액세스를 피하기 위해 RAM 디스크 (예 : native ** Linux의 tmpfs)에서 실행하는 것이 좋습니다.
어쨌든 확실하게 할 수있는 유일한 방법은 두 환경에서 시뮬레이션을 실행하는 데 걸리는 시간을 테스트하는 것입니다. 그러나이를 수행하기 전에 2018 년 2 월부터 Phoronix의 WSL vs. Docker vs. VirtualBox vs. 기본 Linux 성능 벤치 마크와 같은 기존 벤치 마크를보고 동일한 구성 요소에 스트레스를주는 테스트 결과를 조사 할 수 있습니다. 시뮬레이션처럼 시스템의
(FWIW, Phoronix 결과는 위에서 설명한 일반적인 원칙과 대부분 일치하는 것처럼 보이지만 VirtualBox와 같이 몇 가지 I / O 바운드 벤치 마크에서 기본 Linux보다 성능이 뛰어나다는 사실은 거의 없습니다. 가상 디스크가 항상 데이터를 즉시 동기화하지는 않습니다. 위에서 언급하지 못한 잠재적으로 관련된 문제 중 하나는 벤치 마크 가 베어 호스트 하드웨어에서 실행될 때에도 서로 다른 호스트 환경 과 Linux 배포판간에 멀티 스레드 OpenMP 성능에 큰 차이가 있다는 것 입니다. 스레딩과 IPC가 커널에 의해 처리되므로 놀랍지 않습니다. 배포판 간의 차이점의 많은 부분이 다른 런타임 및 / 또는 컴파일 시간 커널 튜닝 매개 변수로 이어질 수 있습니다.)
*) 2016 년 의이 MSDN 블로그 게시물 에 따르면 실제로 WSL에는 NTFS를 통해 기본 Linux 파일 시스템 의미를 에뮬레이트하고 예를 들어 /
및 에 마운트하는 데 사용되는 VolF와 두 가지 파일 시스템 인터페이스 구성 요소가 있습니다. DrvF /home
는 주로 Windows와 같은 의미를 제공합니다. 호스트 윈도우 드라이브에 액세스하는 데 사용되는 경유 /mnt/c
등 소프트웨어는 특히 네이티브 리눅스 파일 시스템 폴더 DrvFs에 데이터 파일을 저장을 구성, 동일한 파일에 여러 하드 링크 같은 기능이 필요하지 않는 경우 수 의 파일 액세스 성능을 향상 WSL.
**) 2017 년 5 월 의이 Reddit 스레드 에 따르면 Wtmp에서 "tmpfs는 현재 디스크를 사용하여 에뮬레이션됩니다". 작년에 어떤 변화가 없다면 WSL에서 tmpfs를 사용하면 일반적인 온 디스크 파일 시스템을 사용하는 것보다 성능상의 이점이 없다는 것을 의미합니다.
-O3 -march=haswell
무언가). Clear Linux가 실제로 커널을 빌드하는 데 사용하는 것을 모르지만 BMI2 / popcnt
/ glibc와 커널에 상당한 차이를 만들 수있는 것은 무엇이든 (커널은 그러나 커널은 소프트웨어 RAID5 / 6 오류 수정 데이터와 같은 특정 코드를 제외하고는 FPU 레지스터를 건드리지 않기 때문에 AVX의 이점은 없습니다.)
Windows의 Ubuntu (WSL-2017 Fall Creators Update)는 Linux 환경의 "Pure"Ubuntu보다 확실히 느립니다.
예를 들어, Windows 10에서 Ubuntu 16.04보다 화면 페인팅이 여러 시간 더 오래 걸립니다. 즉, 실제로 Windows 10에서 커서가 움직이는 것을 볼 수 있습니다.
WSL Bash 스플래시 화면을 페인트하는 데 약 5 초가 걸립니다. 비교하면 우분투 16.04의 동일한 스플래시 화면에서 약 1/2 초입니다.
첫 번째 섹션에서는 화면 I / O 속도가 느리지 만 CPU 벤치마킹은 어떻습니까?
Ask Ubuntu Q & A : Linux 용 CPU 벤치마킹 유틸리티 에서 Linux 및 Windows의 Ubuntu 16.04에서 테스트를 실행했습니다. Linux에서는 Windows 10 버전 1709에서 약 24 초 약 31 초입니다. 리눅스는 6 초 빠르거나 약 25 % 빠릅니다. 그러나 방금 Windows 10을 버전 1803 (Redstone 4 일명 Spring Creators 2018 년 4 월 업데이트)으로 업그레이드했으며 Linux와 동일한 24 초가 걸렸습니다.
$ 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 월 봄 크리에이터 업데이트 AKA Redstone 4)을 설치했으며 화면 페인팅이 훨씬 빠릅니다. Bash 스플래시 화면을 표시하는 데 5 초가 아닌 3 초 밖에 걸리지 않습니다. CPU 벤치 마크는 현재 Linux와 동일합니다.
WSL에서 컴퓨터는 전체 그래픽 Windows 시스템 (처음으로 끔찍한 리소스 호그)과 Ubuntu 하위 시스템을 실행하고 있습니다. 네이티브 우분투에서는 우분투 만 실행합니다.
pstree
또는 을 실행하면 ps auxw
모든 프로세스가 모두 살아 있음이 분명합니다. 또는 top
메모리 소비를 기준으로 정렬하려면 M을 누르십시오.
systemd
SysV처럼 작동하지 않습니다 init
.이 의견의 앞부분은 구식 init
설정으로 5-10 년 된 Linux 배포판을 실행하고있는 것처럼 보입니다 .) , X 세션에서 로그 아웃하고 X11 / GDM을 중지하면 특히 스왑 공간이 없거나 "유휴"상태 일 때에도 바탕 화면이 자주 깨어나는 쓰레기가있는 경우 리소스를 확보합니다.
이것이 시뮬레이션에 특히 영향을 미치는지 모르겠지만 다음과 같습니다.
즉, 시뮬레이션에서 공유 메모리 (생각 /dev/shm
)를 사용하는 경우 속도가 느리고 저장 장치가 마모 될 수 있습니다! 그리고 성능 저하는 여러 계층에서 발생합니다.
파일 시스템 드라이버
스토리지 드라이버
저장 매체
그러나 이것이 수행되지 않으면 성능은 베어 메탈 우분투의 성능과 비슷해야합니다 (다른 I / O가 없다고 가정 함).