순수 우분투와 Windows의 우분투 (WSL)에서 시뮬레이션 실행


15

다음 두 가지 상황에서 동일한 컴퓨터에서 대규모 CAE 시뮬레이션을 테스트하는 방법에 대한 질문을하고 싶습니다 .

  1. 순수한 우분투 시스템
  2. Windows 10 (WSL)의 우분투 시스템

두 경우 모두 계산 속도가 거의 같습니까?


4
시뮬레이션의 특성을 알지 못하면 대답하기가 불가능합니다.
muru

1
@muru : 그것은 아니에요 모호한. "시뮬레이션"은 아마도 계산 집약적 인 백그라운드 작업이므로 CPU 또는 메모리에 바인딩됩니다. (디스크 또는 네트워크 I / O도 병목 현상이 발생할 수 있지만 이러한 프로그램을 작성하는 사람들이 피하는 경향이 있으며 일부 최신 시뮬레이션 코드는 병렬 계산에 GPU를 사용할 수도 있습니다.) 벤치 마크를 쉽게 작성 (또는 다운로드) 할 수 있습니다. 이 모든 2-5 개의 병목 현상을 테스트하고 WSL과 네이티브 우분투간에 큰 차이가 있는지 확인합니다. 나는 그것을 할 것이지만 WSL (또는 Windows 10)을 사용할 수 없습니다.
Ilmari Karonen

3
@IlmariKaronen "아마도". 가져온 데이터에 따라 CPU가 바인드 된 경우에도 IO를 많이 사용할 수 있습니다. 그리고 당신의 의견의 나머지 부분은 이것을 끝내는 꽤 좋은 이유입니다. 우리는 병목 현상의 가능한 조합이 중요하다는 것을 알지 못합니다.
muru

1
적절한 벤치 마크가 이미 온라인 상태 이기 때문에 답변을 게시했습니다 . 분명히 OP의 특정 시뮬레이션 코드가 WSL에서 느리게 실행 될지 여부는 확실 하지 않습니다. 그러나 어쨌든 그 질문에 대한 답은 OP 이외의 다른 사람에게는 아무 소용이 없습니다. 벤치 마크를 기준으로 대답 할 수있는 것은 WSL과 기본 Linux간에 성능 차이가있을 것으로 예상되는 유형의 시뮬레이션 코드입니다.
Ilmari Karonen

@muru, CAE Simulation (Abaqus CAE)입니다.
ABCDEMMM

답변:


18

시뮬레이션 소프트웨어는 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의 이점은 없습니다.)
Peter Cordes

12

Windows의 Ubuntu (WSL-2017 Fall Creators Update)는 Linux 환경의 "Pure"Ubuntu보다 확실히 느립니다.

예를 들어, Windows 10에서 Ubuntu 16.04보다 화면 페인팅이 여러 시간 더 오래 걸립니다. 즉, 실제로 Windows 10에서 커서가 움직이는 것을 볼 수 있습니다.

WSL bash startup.gif

WSL Bash 스플래시 화면을 페인트하는 데 약 5 초가 걸립니다. 비교하면 우분투 16.04의 동일한 스플래시 화면에서 약 1/2 초입니다.

우분투 터미널 splash.gif


CPU 벤치마킹

첫 번째 섹션에서는 화면 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 초가 걸렸습니다.

Linux의 우분투 16.04

$ 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

Windows 10 빌드 1709의 Ubuntu 16.04

$ 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

Windows 10 빌드 1803의 Ubuntu 16.04

$ 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와 동일합니다.


8
이것은 오해의 소지가 있으므로 I / O 성능과 다른 계산 성능을 구분하지 않습니다. WSL은 I / O 속도가 느린 것으로 알려져 있습니다 (예 : Phoronix 벤치 마크 참조). WSL에서 OP의 계산을 빠르게 수행 할 수 있는지 여부에 대해서는 언급하지 않습니다.
muru

6
스플래시 화면을 그리는 것이 두 경우 모두 효과적으로 즉각적이지 않다는 사실에 솔직히 놀랍습니다. 컴퓨터는 비디오 재생과 같이 몇 밀리 초 안에 훨씬 더 복잡한 화면 업데이트를 수행하게되어 기쁩니다. 그리고 마지막으로 2400bps 모뎀에서 BBS를 다이얼 할 때 첫 번째 기록 에서처럼 느린 터미널을 90 년대 초반에 보았습니다.
Ilmari Karonen

"Linux의 우분투"란 무엇을 의미합니까?
존 벤틀리

3
솔직히, 이러한 종류의 벤치 마크는 콘솔 페인팅 속도를 측정하는 벤치 마크와 같이 모든 종류의 현실적인 프로그램에는 전혀 쓸모가 없습니다. 프로그램 병목 현상은 콘솔 I / O (대부분의 터미널 에뮬레이터가있는 Linux에서도 느리게 나타남)이거나 유용한 것의 확실한 척도는 아닙니다.
Matteo Italia

2
@ WinEunuuchs2Unix 내가 볼 수 있듯이 계산은 거의 없습니다. 그러나 많은 I / O : 어딘가에서 날씨를 가져오고, 날짜와 시간을 읽고, 형식으로 인쇄하고, 시스템 정보를 읽는 등. 어쨌든 Abaqus를 사용해 본 적이 있습니까? 시뮬레이션 을 강제로 실행하지 않으면 실제 시뮬레이션을 실행할 때 이와 같은 시뮬레이션 소프트웨어 또는 Ansys 또는 Simulink와 같은 시뮬레이션 소프트웨어가 화면 I / O에 바인딩 되지 않습니다 . 시뮬레이션에 따라 최종 결과를 완벽하게 표시 할 수 있습니다.
muru

7

WSL에서 컴퓨터는 전체 그래픽 Windows 시스템 (처음으로 끔찍한 리소스 호그)과 Ubuntu 하위 시스템을 실행하고 있습니다. 네이티브 우분투에서는 우분투 만 실행합니다.


1
@ JimDeadlock 나는 그것이 데스크탑을 죽일 것이라고 생각하지 않으며 단지 그것을 표시하지 않습니다. 모든 GUI 응용 프로그램은 여전히 ​​백그라운드에서 실행되고 있습니까?
Eric Duminil

2
Windows GUI는 약간의 메모리를 사용하지만 아무것도하지 않을 때는 CPU 사용량이 많지 않습니다. 왜 이것이 중요한 영향을 줄지 모르겠습니까?
vidarlo

1
콘솔을 다른 VT로 전환해도 프로세스가 중단되지 않습니다. @EricDuminil이 맞습니다. X 서버는 더 이상 표시되지 않으므로 CPU 시간을 사용하여 그래픽 업데이트를 수행하는 작업을 일시 중지 할 수 있습니다 (따라서 OpenGL 처리 등의 시간을 낭비하지 않을 수 있음). 그러나 pstree또는 을 실행하면 ps auxw모든 프로세스가 모두 살아 있음이 분명합니다. 또는 top메모리 소비를 기준으로 정렬하려면 M을 누르십시오.
Peter Cordes

2
@MichaelEricOberlin : 다른 VT로 변경해도 런레벨에는 영향을 미치지 않습니다! 텍스트 콘솔은 GDM을 시작하는 런레벨에서 계속 사용할 수 있습니다 . (그리고 BTW, 런레벨은 기본적으로 과거의 일입니다 . systemdSysV처럼 작동하지 않습니다 init.이 의견의 앞부분은 구식 init설정으로 5-10 년 된 Linux 배포판을 실행하고있는 것처럼 보입니다 .) , X 세션에서 로그 아웃하고 X11 / GDM을 중지하면 특히 스왑 공간이 없거나 "유휴"상태 일 때에도 바탕 화면이 자주 깨어나는 쓰레기가있는 경우 리소스를 확보합니다.
Peter Cordes

1
@MichaelEricOberlin : 귀하의 의견은 아주 잘못되었습니다. 삭제를 고려 하시겠습니까?
Eric Duminil

1

이것이 시뮬레이션에 특히 영향을 미치는지 모르겠지만 다음과 같습니다.

WSL은 공유 메모리에 RAM을 사용 하지 않습니다 ! 디스크를 사용합니다!

즉, 시뮬레이션에서 공유 메모리 (생각 /dev/shm)를 사용하는 경우 속도가 느리고 저장 장치가 마모 될 수 있습니다! 그리고 성능 저하는 여러 계층에서 발생합니다.

  • 파일 시스템 드라이버

  • 스토리지 드라이버

  • 저장 매체

그러나 이것이 수행되지 않으면 성능은 베어 메탈 우분투의 성능과 비슷해야합니다 (다른 I / O가 없다고 가정 함).


정말 잘 알고 있습니다!
ABCDEMMM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.