Giới thiệu¶
Trong hướng dẫn này, chúng tôi sẽ trình bày cách sử dụngđá quý5artVàgem5-tài nguyênchạyĐiểm chuẩn CPU SPEC 2017ở chế độ toàn bộ hệ thống của gem5. Các tập lệnh trong hướng dẫn này hoạt động với gem5art v1.3.0, gem5 20.1.0.4 và gem5-resource 20.1.0.4.
Nội dung của hướng dẫn này chủ yếu là để tiến hành thử nghiệm SPEC CPU 2017. Tuy nhiên, do sự tương đồng về tài nguyên của SPEC 2006 và SPEC 2017, hướng dẫn này cũng áp dụng để tiến hành thử nghiệm SPEC 2006 bằng cách sử dụngsrc/spec-2006
thư mục thay vìsrc/spec-2017
của tài nguyên gem5.
gem5-tài nguyên¶
gem5-tài nguyênlà một bộ sưu tập các tài nguyên liên quan đến gem5 được duy trì tích cực thường được sử dụng. Các tài nguyên bao gồm tập lệnh, tệp nhị phân và ảnh đĩa để mô phỏng toàn bộ hệ thống của nhiều điểm chuẩn thường được sử dụng. Hướng dẫn này sẽ cung cấp hướng dẫn sử dụng tài nguyên gem5 để mô phỏng toàn bộ hệ thống.
Chế độ toàn hệ thống gem5¶
Khác với chế độ gem5 SE (chế độ giả lập hệ thống), chế độ FS (chế độ toàn hệ thống) sử dụng nhị phân nhân Linux thực tế thay vì mô phỏng các trách nhiệm của một hệ điều hành hiện đại điển hình như quản lý bảng trang và xử lý các lệnh gọi hệ thống. Kết quả là , mô phỏng gem5 FS sẽ thực tế hơn so với mô phỏng gem5 SE, đặc biệt khi các tương tác giữa khối lượng công việc và HĐH là một phần quan trọng của mô phỏng.
Mô phỏng hệ thống đầy đủ của gem5 điển hình yêu cầu nhân Linux đã biên dịch, ảnh đĩa chứa điểm chuẩn đã biên dịch và cấu hình hệ thống gem5. Tài nguyên gem5 thường cung cấp tất cả các tài nguyên được đề cập bắt buộc cho mọi điểm chuẩn được hỗ trợ sao cho người dùng có thể tải xuống tài nguyên và chạy chương trình thử nghiệm mà không cần sửa đổi nhiều. Tuy nhiên, do vấn đề về giấy phép, gem5-resources không cung cấp ảnh đĩa chứa các điểm chuẩn của SPEC CPU 2017. Trong hướng dẫn này, chúng tôi sẽ cung cấp một bộ tập lệnh tạo ảnh đĩa chứa các điểm chuẩn giả định là tệp ISO của điểm chuẩn SPEC CPU 2017 đã có sẵn.
Cấu trúc tổng thể của thí nghiệm¶
thông số kỹ thuật-2017/ |___ đá quý5/ # thư mục gem5 | |___ đĩa-hình ảnh/ | |___ chia sẻ/ | |___ thông số kỹ thuật-2017/ | |___ thông số kỹ thuật-2017-hình ảnh/ | | |___ thông số kỹ thuật-2017 # ảnh đĩa sẽ được tạo ở đây | |___ thông số kỹ thuật-2017.json # tập lệnh Packer | |___ cpu2017-1.1.0.iso # SPEC 2017 ISO (thêm vào đây) | |___ cấu hình | |___ hệ thống/ | |___ run_spec.py # tập lệnh chạy gem5 | |___ vmlinux-4.19.83 # Nhân Linux, liên kết tải xuống được cung cấp bên dưới | |___ ĐỌC.md
Tổng quan về Hệ thống máy chủ - Tương tác gem5¶
Hình 1.Một mô tả trực quan về cách gem5 tương tác với hệ thống máy chủ.gem5 được cấu hình để thực hiện những việc sau: khởi động nhân Linux, chạy điểm chuẩn và sao chép các đầu ra SPEC vào hệ thống máy chủ. Tuy nhiên, vì chúng tôi chỉ quan tâm đến việc lấy số liệu thống kê đối với điểm chuẩn, chúng tôi sẽ định cấu hình gem5 để thoát sau khi kernel được khởi động, sau đó chúng tôi đặt lại số liệu thống kê trước khi chạy điểm chuẩn. Chúng tôi sử dụng mô hình CPU KVM trong quy trình khởi động gem5 cho Linux để khởi động nhanh hệ thống và sau khi quá trình hoàn tất , chúng tôi chuyển sang CPU chi tiết mong muốn để chạy điểm chuẩn. Tương tự, sau khi điểm chuẩn hoàn tất, gem5 thoát ra máy chủ, cho phép chúng tôi lấy số liệu thống kê tại thời điểm đó. Sau đó, tùy chọn, chúng tôi chuyển CPU trở lại KVM, cho phép chúng tôi nhanh chóng ghi các tệp đầu ra SPEC vào máy chủ.
Ghi chú:gem5 sẽ xuất lại số liệu thống kê khi quá trình chạy gem5 hoàn tất. Do đó, chúng ta sẽ thấy hai bộ số liệu thống kê trong một tệp trong stats.txt. Số liệu thống kê của điểm chuẩn là phần đầu tiên của stats.txt, trong khi phần thứ hai của tệp chứa số liệu thống kê của điểm chuẩn VÀ quá trình ghi tệp đầu ra trở lại máy chủ. Chúng tôi chỉ quan tâm đến phần đầu tiên của stats.txt.
Thiết lập thử nghiệm¶
Trong phần này, chúng tôi có hai nhiệm vụ đồng thời: thiết lập tài nguyên và ghi lại quy trình bằng gem5art. Chúng tôi sẽ cấu trúcTài nguyên SPEC 2017 được trình bày bởi gem5-resources.Kịch bảnlaunch_spec2017_experiment.py
sẽ chứa tài liệu về các tạo phẩm mà chúng tôi tạo và cũng sẽ đóng vai trò là tập lệnh Python khởi chạy thử nghiệm.
Nhận tài nguyên gem5 và Thiết lập Thư mục Thử nghiệm¶
Đầu tiên, chúng tôi sao chép repo tài nguyên gem5 và kiểm tra nhánh ổn định cho đến1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357
cam kết, đây là phiên bản mới nhất của tài nguyên gem5 tương thích với gem5 20.1.0.4 kể từ tháng 3 năm 2021.
bản sao git https://gem5.googlesource.com/public/gem5-resourceđĩa CDgem5-resourcesgit checkout 1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357
Vì tất cả các tài nguyên liên quan đến bộ điểm chuẩn SPEC CPU 2006 đều nằm trongsrc/spec-2017
và các thư mục khác trongsrc/
không liên quan đến thử nghiệm này, chúng tôi đặt thư mục gốc của thử nghiệm trongsrc/spec-2017
thư mục của repo nhân bản. Để theo dõi các thay đổi dành riêng chosrc/spec-2017
, chúng tôi thiết lập cấu trúc git cho thư mục. Ngoài ra, điều khiển từ xa git trỏ đếnnguồn gốc
cũng nên được thiết lập vì gem5art sẽ sử dụngnguồn gốc
thông tin. Tronggem5-tài nguyên
thư mục,
đĩa CDsrc/spec-2017git initgit remote add origin https://remote-address/spec-experiment.git
Chúng tôi ghi lại thư mục gốc của thử nghiệm tronglaunch_spec2017_experiment.py
như sau,
thí nghiệm_repo =Artifact.registerArtifact( yêu cầu = '''bản sao git https://gem5.googlesource.com/public/gem5-resourcetài nguyên cd gem5kiểm tra git 1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357cd src/spec-2017git initgit remote add origin https://remote-address/spec-experiment.git''',đánh máy = 'git repo',tên = 'Thử nghiệm spec2017',con đường = './',cwd = './',tài liệu = '''repo cục bộ để chạy thử nghiệm spec 2017 với chế độ toàn hệ thống gem5;tài nguyên được sao chép từ https://gem5.googlesource.com/public/gem5-resource tối đa cam kết 1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357 của nhánh ổn định''')
Chúng tôi sử dụng.gitignore
tệp để thay đổi sâu sắc một số tệp và thư mục nhất định. Trong thử nghiệm này, chúng tôi sẽ sử dụng.gitignore
tài liệu,
*.pycm5out.vscodekết quảđá quý5art-envđĩa-hình ảnh/người đóng góiđĩa-hình ảnh/packer_cacheđĩa-hình ảnh/thông số kỹ thuật-2017/thông số kỹ thuật-2017-hình ảnh/thông số kỹ thuật-2017đĩa-hình ảnh/thông số kỹ thuật-2017/cpu2017-1.1.0.isođá quý5vmlinux-4.19.83
Trong tập lệnh trên, chúng tôi bỏ qua các tệp và thư mục mà chúng tôi sử dụng các đối tượng Đồ tạo tác gem5art khác để theo dõi chúng hoặc sự hiện diện của các tệp và thư mục đó không ảnh hưởng đến kết quả của thử nghiệm. Ví dụ:hình ảnh đĩa/bộ đóng gói
là đường dẫn đến tệp nhị phân của trình đóng gói tạo ảnh đĩa và các phiên bản mới hơnngười đóng gói
có thể sẽ không ảnh hưởng đến nội dung của ảnh đĩa. Một ví dụ khác là chúng ta sử dụng một đối tượng Tạo tác gem5art khác để theo dõivmlinux-4.19.83
, vì vậy chúng tôi đặt tên của tệp trong.gitignore
tài liệu.
Ghi chú:Bạn có thể nhận thấy rằng có nhiều cách để theo dõi các tệp trong thư mục thử nghiệm: cấu trúc git của thử nghiệm sẽ theo dõi một tệp hoặc chúng ta có thể tạo một tệp riêng biệt.hiện vật gem5artđối tượng để theo dõi tệp đó. Quyết định cho phép cấu trúc git hoặc tạo đối tượng Tạo tác mới dẫn đến các kết quả khác nhau. Sự khác biệt nằm ở loại đối tượng Tạo tác (được chỉ định bởiđánh máy
tham số): cho các đối tượng Artifact cóđánh máy
củagit repo
, gem5art sẽ không tải các tệp trong cấu trúc git lên cơ sở dữ liệu của gem5art, thay vào đó, nó sẽ chỉ theo dõi hàm băm của cam kết HEAD của cấu trúc git. Tuy nhiên, đối với Artifact thì làm như vậykhôngcóđánh máy
đó làgit repo
, tệp được chỉ định trongcon đường
tham số sẽ được tải lên cơ sở dữ liệu.
Về cơ bản, chúng tôi có xu hướng giữ các tệp có kích thước nhỏ (chẳng hạn như tập lệnh và văn bản) trong cấu trúc git và giữ các tệp có kích thước lớn (chẳng hạn như tệp nhị phân gem5 và ảnh đĩa) ở dạng Artifact.đá quý5 nhị phân
hoặcnhị phân
.Một điểm khác biệt quan trọng nữa là gem5art khôngkhôngtheo dõi các tệp trong Artifact git, trong khi nó tải các loại Artifact khác lên cơ sở dữ liệu của nó.
Xây dựng đá quý5¶
Trong bước này, chúng tôi tải xuống mã nguồn và xây dựng gem5 v20.1.0.4. Trong thư mục gốc của thử nghiệm,
git clone -b v20.1.0.4 https://gem5.googlesource.com/public/gem5đĩa CDgem5scons build/X86/gem5.opt -j8
Chúng tôi có hai tạo phẩm: một là mã nguồn gem5 (repo git gem5) và tệp nhị phân gem5 (đá quý5.opt
).TRONGlaunch_spec2017_experiments.py
, chúng tôi ghi lại bước này trong các đối tượng Artifact như sau,
gem5_repo = hiện vật.đăng kýArtifact( yêu cầu = '''git clone -b v20.1.0.4 https://gem5.googlesource.com/public/gem5đá quý cd5bản dựng scons/X86/gem5.opt -j8''', đánh máy = 'git repo', tên = 'đá quý5', con đường = 'gem5/', cwd = './', tài liệu = 'nhân bản gem5 v20.1.0.4')gem5_binary = hiện vật.đăng kýArtifact( yêu cầu = 'scons build/X86/gem5.opt -j8', đánh máy = 'nhị phân gem5', tên = 'đá quý5-20.1.0.4', cwd = 'gem5/', con đường = 'gem5/build/X86/gem5.opt', đầu vào = [gem5_repo,], tài liệu = 'đã biên dịch nhị phân gem5 v20.1.0.4')
tòa nhà m5¶
m5 là một tệp nhị phân tạo điều kiện giao tiếp giữa hệ thống máy chủ và hệ thống khách (gem5). Việc sử dụng tệp nhị phân m5 sẽ được thể hiện trong các bản ghi chạy mà chúng tôi sẽ mô tả sau. Tệp nhị phân m5 sẽ được sao chép vào ảnh đĩa để guest có thể chạy nhị phân m5 trong quá trình mô phỏng. m5 nhị phân nên được biên dịch trước khi chúng tôi tạo ảnh đĩa.
Ghi chú:điều quan trọng là phải biên dịch nhị phân m5 với-DM5_ADDR=0xFFFF0000
như là mặc định trong SConscript. Địa chỉ này được sử dụng bởi nhị phân khách để giao tiếp với trình giả lập. Nếu bạn thay đổi địa chỉ trong nhị phân khách, bạn cũng phải cập nhật trình mô phỏng để sử dụng địa chỉ mới. Ngoài ra, khi chạy trong KVM , bạn bắt buộc phải sử dụngĐịa chỉhình thức giao tiếp khách <-> giả lập và không phải hình thức hướng dẫn giả (nghĩa là sử dụng-DM5_ADDR
làyêu cầukhi biên dịch tệp nhị phân khách mà bạn muốn chạy ở chế độ KVM trên gem5).
Để biên dịch nhị phân m5, trong thư mục gốc của thử nghiệm,
đĩa CDgem5/util/m5/scons build/x86/out/m5
TRONGlaunch_spec2017_experiments.py
, chúng tôi ghi lại bước trong một đối tượng Artifact như sau,
m5_nhị phân = hiện vật.đăng kýArtifact( yêu cầu = 'bản dựng scons/x86/ra/m5', đánh máy = 'nhị phân', tên = 'm5', con đường = 'gem5/util/m5/build/x86/out/m5', cwd = 'gem5/util/m5', đầu vào = [gem5_repo,], tài liệu = 'tiện ích m5')
Xây dựng hình ảnh đĩa¶
Trong bước này, chúng tôi sẽ xây dựng hình ảnh đĩa bằng cách sử dụngngười đóng gói.Ghi chú:Nếu bạn quan tâm đến việc sửa đổi tệp cấu hình SPEC,Phụ lục IImô tả cách hoạt động của các tập lệnh tạo ảnh đĩa. Ngoài ra, bạn có thể tìm thêm thông tin về cách sử dụng trình đóng gói và tạo ảnh đĩađây.
Trước tiên, chúng tôi tải xuống tệp nhị phân của trình đóng gói. Phiên bản hiện tại của trình đóng gói kể từ tháng 12 năm 2020 là 1.6.6.
đĩa CDdisk-image/wget https://releases.hashicorp.com/packer/1.6.6/packer_1.6.6_linux_amd64.zipunzip packer_1.6.6_linux_amd64.ziprm packer_1.6.6_linux_amd64.zip
TRONGlaunch_spec2017_experiments.py
, chúng tôi ghi lại cách chúng tôi lấy nhị phân như sau,
người đóng gói = hiện vật.đăng kýArtifact( yêu cầu = '''quên https://releases.hashicorp.com/packer/1.6.6/packer_1.6.6_linux_amd64.zip;giải nén packer_1.6.6_linux_amd64.zip;''', đánh máy = 'nhị phân', tên = 'người đóng gói', con đường = 'hình ảnh đĩa/trình đóng gói', cwd = 'hình ảnh đĩa', tài liệu = 'Chương trình xây dựng ảnh đĩa. Đã tải xuống từ https://www.packer.io/.')
Thứ hai, chúng tôi tạo ảnh đĩa. Tập lệnhhình ảnh đĩa/spec-2017/spec-2017.json
chỉ định cách hình ảnh đĩa được tạo. Trong bước này, chúng tôi giả định rằng tệp ISO SPEC 2017 nằm tronghình ảnh đĩa/spec-2017
thư mục và tên tệp ISO làcpu2017-1.1.0.iso
.Đường dẫn và tên của tệp ISO có thể được thay đổi trong tệp JSON.
Để tạo ảnh đĩa, trong thư mục gốc của thử nghiệm,
đĩa CDdisk-image/./packer xác thực spec-2017/spec-2017.json# xác thực tập lệnh, bao gồm kiểm tra các tệp đầu vào./packer build spec-2017/spec-2017.json
Quá trình này sẽ mất khoảng hơn một giờ để hoàn tất trên một máy khá mới với tốc độ internet cáp. Hình ảnh đĩa sẽ ở dạnghình ảnh đĩa/spec-2017/spec-2017-image/spec-2017
.
Ghi chú:Trình đóng gói sẽ xuất một URL tới máy chủ VNC có thể được kết nối để kiểm tra quá trình xây dựng.
Ghi chú: Tìm hiểu thêm về cách sử dụng trình đóng gói và tạo ảnh đĩa.
Bây giờ, tronglaunch_spec2017_experiments.py
, chúng ta tạo một đối tượng Artifact của ảnh đĩa.
disk_image = hiện vật.đăng kýArtifact( yêu cầu = './packer build spec-2017/spec-2017.json', đánh máy = 'hình ảnh đĩa', tên = 'spec-2017', cwd = 'hình ảnh đĩa /', con đường = 'hình ảnh đĩa/spec-2017/spec-2017-image/spec-2017', đầu vào = [người đóng gói, thí nghiệm_repo, m5_nhị phân,], tài liệu = 'Máy chủ Ubuntu đã cài đặt SPEC 2017, cài đặt nhị phân m5 và đăng nhập tự động root')
Lấy hạt nhân Linux đã biên dịch hoạt động với gem5¶
Có thể tìm thấy các tệp nhị phân nhân Linux đã biên dịch được biết là hoạt động với gem5 tại đây:https://www.gem5.org/documentation/General_docs/gem5_resources/.
Các cấu hình nhân Linux được sử dụng để biên dịch các tệp nhị phân nhân Linux được ghi lại và duy trì trong các tài nguyên gem5:https://gem5.googlesource.com/public/gem5-resources/+/cee972a1727abd80924dad73d9f3b5cf0f13012d/src/linux-kernel/.
Lệnh sau tải xuống nhân Linux đã biên dịch của phiên bản 4.19.83. Trong thư mục gốc của thử nghiệm,
wget http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.19.83
Hiện nay,TRONG launch_spec2017_experiments.py
, chúng ta tạo một đối tượng Artifact của nhị phân nhân Linux.
linux_binary = hiện vật.đăng kýArtifact( tên = 'vmlinux-4.19.83', đánh máy = 'hạt nhân', con đường = './vmlinux-4.19.83', cwd = './', yêu cầu = ''' wget http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.19.83''', đầu vào = [thí nghiệm_repo,], tài liệu = "nhân nhị phân cho v4.19.83",)
cấu hình hệ thống gem5¶
Các cấu hình hệ thống gem5 có thể được tìm thấy trongcấu hình/
thư mục. Tập lệnh chạy gem5 nằm trongconfigs/run_spec.py
, nhận các tham số sau:
--kernel
: (bắt buộc) đường dẫn đến tệp vmlinux.--đĩa
: (bắt buộc) đường dẫn đến hình ảnh cụ thể.--CPU
: (bắt buộc) tên của kiểu CPU chi tiết. Hiện tại, chúng tôi đang hỗ trợ các kiểu CPU sau: kvm, o3, nguyên tử, thời gian. Có thể thêm các kiểu CPU khác vào getDetailedCPUModel() trong run_spec.py.--điểm chuẩn
: tên (bắt buộc) của điểm chuẩn SPEC CPU 2017. Tính khả dụng của điểm chuẩn có thể được tìm thấy ở cuối hướng dẫn.--kích cỡ
: (bắt buộc) kích thước của điểm chuẩn. Có ba tùy chọn: giới thiệu, đào tạo, kiểm tra.--no-copy-log
: đây là một tham số tùy chọn chỉ định xem các tệp nhật ký đặc tả có nên được sao chép vào hệ thống máy chủ hay không.--allow-listers
: đây là tham số tùy chọn chỉ định liệu gem5 có nên mở cổng để gdb hoặc telnet có thể kết nối tới hay không. Theo mặc định, không có người nghe nào được phép.
Chúng tôi không sử dụng đối tượng Cổ vật khác để ghi lại tệp này. Đối tượng kho lưu trữ Cổ vật của thư mục gốc sẽ theo dõi các thay đổi của tập lệnh.
Ghi chú: Hai tham số đầu tiên của tập lệnh chạy gem5 để mô phỏng toàn bộ hệ thống phải luôn là đường dẫn đến tệp nhị phân linux và đường dẫn đến ảnh đĩa, theo thứ tự đó
Chạy thử nghiệm¶
Thiết lập môi trường ảo Python¶
mã gem5art hoạt động với Python 3.5 trở lên.
Đoạn script sau sẽ thiết lập môi trường ảo python3 có tên gem5art-env. Trong thư mục gốc của thử nghiệm,
virtualenv -p python3 gem5art-env
Để kích hoạt môi trường ảo, trong thư mục gốc của thử nghiệm,
nguồngem5art-env/bin/kích hoạt
Để cài đặt phụ thuộc gem5art (điều này nên được thực hiện khi chúng ta ở trong môi trường ảo),
pip cài đặt gem5art-artifact gem5art-run gem5art-tasks
Để thoát khỏi môi trường ảo,
hủy kích hoạt
Ghi chú:các bước sau đây nên được thực hiện trong khi sử dụng môi trường ảo Python.
Chạy máy chủ cơ sở dữ liệu¶
Đoạn script sau sẽ chạy máy chủ cơ sở dữ liệu MongoDB trong bộ chứa docker.
docker chạy -p27017:27017 -v /path/in/host:/data/db --name mongo-1 -d mongo
Tùy chọn -p 27017:27017 ánh xạ cổng 27017 trong bộ chứa sang cổng 27017 trên máy chủ. Tùy chọn -v /path/in/Host:/data/db gắn thư mục /data/db trong bộ chứa docker vào thư mục /path/in/host trong máy chủ. Đường dẫn của thư mục máy chủ phải là đường dẫn tuyệt đối và các tệp cơ sở dữ liệu do MongoDB tạo sẽ nằm trong thư mục đó. Tùy chọn –name mongo-1 chỉ định tên của bộ chứa docker. Chúng tôi có thể sử dụng tên này để xác định vùng chứa. Tùy chọn -d sẽ cho phép vùng chứa chạy trong nền.mongo là tên củahình ảnh mongo chính thức.
Chạy Celery Server (tùy chọn)¶
Bước này chỉ cần thiết nếu bạn muốn sử dụng Celery để quản lý các quy trình. Đặt đường dẫn trong máy chủ được chỉ định ở trên,
cần tây -E -A gem5art.tasks.celery worker --autoscale=[số lượng công nhân],0
Tạo Launch Script Chạy thử nghiệm¶
Bây giờ, chúng ta có thể kết hợp tập lệnh chạy! Trong launch_spec2017_experiments.py, chúng ta nhập các mô-đun và lớp bắt buộc ở đầu tệp,
nhập khẩu hệ điều hànhnhập khẩu hệ thốngtừ uuid nhập khẩu UUIDtừ gem5art.artifact nhập khẩu hiện vậttừ gem5art.run nhập khẩu lưu5Runtừ gem5art.t task.t task nhập khẩu run_job_pool
Và sau đó, chúng tôi đặt hàm khởi chạy ở cuối launch_spec2017_experiments.py,
nếu như __tên__ == "__chủ yếu__": cpu = ['kvm', 'nguyên tử', 'o3', 'thời gian'] benchmark_sizes = {'kvm': ['Bài kiểm tra', 'giới thiệu'], 'nguyên tử': ['Bài kiểm tra'], 'o3': ['Bài kiểm tra'], 'thời gian': ['Bài kiểm tra'] } điểm chuẩn = ["503.bwave_r", "507.cactuBSSN_r", "508.namd_r", "510.parest_r", "511.povray_r", "519.lbm_r", "521.wrf_r", "526.blender_r", "527.cam4_r", "538.imagick_r", "544.nab_r", "549.fotonik3d_r", "554.roms_r", "997.specrand_fr", "603.bwave_s", "607.cactuBSSN_s", "619.lbm_s", "621.wrf_s", "627.cam4_s", "628.pop2_s", "638.imagick_s", "644.nab_s", "649.fotonik3d_s", "654.roms_s", "996.specrand_fs", "500.perlbench_r", "502.gcc_r", "505.mcf_r", "520.omnetpp_r", "523.xalancbmk_r", "525.x264_r", "531.deepsjeng_r", "541.leela_r", "548.exchange2_r", "557.xz_r", "999.specrand_is", "600.perlbench_s", "602.gcc_s", "605.mcf_s", "620.omnetpp_s", "623.xalancbmk_s", "625.x264_s", "631.deepsjeng_s", "641.leela_s", "648.exchange2_s", "657.xz_s", "998.specrand_is"] chạy = [] vì CPU TRONG cpu: vì kích cỡ TRONG benchmark_sizes[CPU]: vì điểm chuẩn TRONG điểm chuẩn: chạy = lưu5Run.tạoFSRun( 'thử nghiệm thông số kỹ thuật gem5 v20.1.0.4 năm 2017', # tên 'gem5/build/X86/gem5.opt', # đá quý5_nhị phân 'gem5-configs/run_spec.py', # chạy script 'kết quả/{}/{}/{}'.định dạng(CPU, kích cỡ, điểm chuẩn), # người thân_outdir gem5_binary, #gem5_artifact gem5_repo, # gem5_git_artifact run_script_repo, # run_script_git_artifact 'linux-4.19.83/vmlinux-4.19.83', # linux_nhị phân 'hình ảnh đĩa/spec2017/spec2017-hình ảnh/spec2017', # đĩa_ảnh linux_binary, # linux_binary_artifact disk_image, #đĩa_hình_tạo CPU, điểm chuẩn, kích cỡ, # thông số hết giờ = 10*24*60*60 # 10 ngày ) chạy.nối thêm(chạy) run_job_pool(chạy)
Chức năng khởi chạy ở trên sẽ chạy tất cả các điểm chuẩn có sẵn với cpus kvm, nguyên tử, thời gian và o3. Đối với kvm, cả kích thước thử nghiệm và kích thước tham chiếu sẽ được chạy, trong khi đối với phần còn lại, chỉ các điểm chuẩn của thử nghiệm kích thước sẽ được chạy.
Lưu ý rằng dòng'kết quả/{}/{}/{}'.format(cpu, kích cỡ, điểm chuẩn), # người thân_outdir
chỉ định cách thư mục kết quả được cấu trúc. Thư mục kết quả phải được cấu trúc cẩn thận để không tồn tại hai lần chạy gem5 ghi vào cùng một nơi.
Chạy thử nghiệm¶
Có máy chủ celery và mongoDB đang chạy, chúng ta có thể bắt đầu thử nghiệm.
Trong thư mục gốc của thử nghiệm,
python3 launch_spec2017_experiment.py
Ghi chú:URI tới máy chủ cơ sở dữ liệu từ xa có thể được chỉ định bằng cách chỉ định biến môi trườngGEM5ART_DB
.Ví dụ: nếu máy chủ cơ sở dữ liệu mongo đang chạy ởmáy chủ cục bộ123
, lệnh để chạy tập lệnh khởi chạy sẽ là,
GEM5ART_DB="mongodb: // localhost123"python3 launch_spec2017_experiment.py
Phụ lục I. Tình trạng làm việc¶
Kể từ tháng 3 năm 2020, không phải tất cả các điểm chuẩn đều được tổng hợp trong thiết lập ở trên. Trạng thái làm việc của khối lượng công việc SPEC 2017 có tại đây:https://www.gem5.org/documentation/benchmark_status/gem5-20#spec-2017-tests.
Phụ lục II. Tập lệnh tạo ảnh đĩa¶
hình ảnh đĩa/spec-2017/install-spec2017.sh
: tập lệnh Bash sẽ được thực thi trên máy khách sau khi Ubuntu Server được cài đặt trong ảnh đĩa; tập lệnh này cài đặt các phụ thuộc để biên dịch và chạy khối lượng công việc SPEC, gắn SPEC ISO và cài đặt bộ điểm chuẩn trên ảnh đĩa, đồng thời tạo cấu hình SPEC từ mẫu gcc42.
disk-image/spec-2017/post-installation.sh
: tập lệnh sẽ được thực thi trên máy khách; kịch bản này sao chépserial-getty@.service
tập tin vàohệ thống
thư mục, sao chép nhị phân m5 vào/sbin
, và nối thêm nội dung củarunscript.sh
đến hình ảnh đĩa.bashrc
tệp này sẽ được thực thi sau khi quá trình khởi động hoàn tất.
hình ảnh đĩa/spec-2017/runscript.sh
: tập lệnh sẽ được sao chép vào.bashrc
trên ảnh đĩa để các lệnh trong tập lệnh này sẽ được chạy ngay sau quá trình khởi động.
hình ảnh đĩa/spec-2017/spec-2017.json
: chứa cấu hình cho Packer biết cách tạo ảnh đĩa.