1. Khởi động dịch vụ A-Tune
1.1 Cấu hình ổ đĩa và card mạng
Sau khi cài đặt bằng lệnh dưới đây, hệ thống sẽ tự động ghi nhận các ổ đĩa và card mạng được phát hiện vào tệp cấu hình /etc/atuned/atuned.cnf. Bạn có thể chỉnh sửa trực tiếp trong tệp này để chỉ định ổ đĩa và card mạng mong muốn.
make collector-install
make install
1.2 Khởi chạy các dịch vụ A-Tune
Thực thi các lệnh sau để khởi động dịch vụ:
sudo systemctl daemon-reload
sudo systemctl start atuned
sudo systemctl start atune-engine
Kiểm tra trạng thái hoạt động của dịch vụ:
sudo systemctl status atuned
sudo systemctl status atune-engine
1.3 Lệnh quản lý atune-adm
atune-adm list: Liệt kê các hồ sơ (profile) mà hệ thống hỗ trợ và hồ sơ đang được kích hoạt.atune-adm profile [tên]: Kích hoạt một chiến lược tối ưu cụ thể.atune-adm analysis [options]: Tối ưu tĩnh trực tuyến, thu thập thông tin hệ thống theo thời gian thực để nhận dạng loại tải và tự động tối ưu.atune-adm tuning [OPTIONS] <PROJECT_YAML>: Tối ưu động ngoại tuyến, sử dụng tệp dự án được chỉ định để tìm kiếm không gian tham số động và tìm ra giải pháp tối ưu cho cấu hình hiện tại.
2. Ví dụ về tối ưu động ngoại tuyến
Ví dụ dưới đây sử dụng trình biên dịch gcc trong thư mục
A-Tune/examples/tuning.
2.1 Chuẩn bị môi trường
sh prepare.sh
2.2 Tải chương trình kiểm tra băng thông bộ nhớ stream.c
wget http://www.cs.virginia.edu/stream/FTP/Code/stream.c
2.3 Thực hiện tối ưu
atune-adm tuning --project gcc_compile --detail gcc_compile_client.yaml
Kết quả: Băng thông bộ nhớ tăng 121%, kích thước tệp thực thi sau biên dịch giảm 17%.
2.4 Lưu kết quả
atune-adm tuning --restore --project gcc_compile
3. Cấu trúc tệp tin trong tối ưu động ngoại tuyến
Tối ưu động ngoại tuyến yêu cầu ba tệp đầu vào: client.yaml, server.yaml và benchmark.
- client.yaml: Lưu trên máy khách, chứa các chỉ số đánh giá cho quá trình tối ưu.
- server.yaml: Lưu trên máy chủ, chứa các tham số có thể điều chỉnh.
- benchmark: Lưu trên máy khách, thực thi tệp này để thu thập giá trị cụ thể của các chỉ số đánh giá.
Lấy ví dụ tối ưu trình biên dịch gcc, giải thích chi tiết ba tệp này.
3.1 Tệp client.yaml
Nội dung bao gồm:
- Thuật toán tối ưu (dòng 2)
- Số lần lặp (dòng 3)
- Số lần lặp ngẫu nhiên (dòng 4)
- Lệnh thực thi benchmark (dòng 6)
- Thông tin chỉ số đánh giá 1 (dòng 8-13)
- Thông tin chỉ số đánh giá 2 (dòng 14 trở đi)
Ngoài ra, có thể thêm mục chọn tham số trong client.yaml để thu hẹp không gian tham số trước khi tối ưu chính thức. Cách thực hiện bằng cách thêm các tham số sau:
feature_filter_engine: <thuật toán chọn tham số>
feature_filter_cycle: <số vòng chọn tham số>
feature_filter_iters: <số lần lặp chọn tham số>
feature_filter_count: <số tham số được chọn mỗi vòng>
split_count: <số tham số được chọn đều trong khoảng giá trị điều chỉnh>
3.2 Tệp server.yaml
Nội dung gồm lệnh khởi động ứng dụng (dòng 3), lệnh dừng ứng dụng (dòng 4) và các tham số có thể điều chỉnh (dòng 5 trở đi).
3.3 Tệp benchmark
Benchmark là tệp thực thi dùng để đo lường các chỉ số đánh giá theo lệnh được cung cấp trong client.yaml.
Thực hiện tối ưu và lưu kết quả:
atune-adm tuning --project <TÊN_DỰ_ÁN> --detail <client.yaml>
atune-adm tuning --restore --project <TÊN_DỰ_ÁN>
4. Hướng dẫn sử dụng A-Tune
4.1 Tổng quan
Lệnh atune-adm hỗ trợ tra cứu bằng atune-adm help, --help hoặc -h. Các lệnh mẫu dưới đây áp dụng cho triển khai đơn máy. Với triển khai phân tán, cần chỉ định IP máy chủ và cổng, ví dụ:
atune-adm -a 192.168.3.196 -p 60001 list
Các lệnh define, update, undefine, collection, train, upgrade không hỗ trợ thực thi từ xa.
4.2 Truy vấn loại tải
list: Xem danh sách profile hệ thống hỗ trợ và profile đang kích hoạt.
atune-adm list
4.3 Phân tích tải và tự động tối ưu
Sử dụng mô hình mặc định để nhận dạng ứng dụng mà không tự động tối ưu:
atune-adm analysis --characterization
Sử dụng mô hình mặc định và tự động tối ưu:
atune-adm analysis
Sử dụng mô hình tự huấn luyện để nhận dạng:
atune-adm analysis --model /usr/libexec/atuned/analysis/models/new-model.m
4.4 Tự định nghĩa mô hình
Quy trình định nghĩa và huấn luyện mô hình mới:
- Bước 1: Dùng lệnh
defineđể định nghĩa profile cho ứng dụng mới. - Bước 2: Dùng lệnh
collectionđể thu thập dữ liệu hệ thống tương ứng. - Bước 3: Dùng lệnh
trainđể huấn luyện mô hình.
4.4.1 define
Thêm một kịch bản ứng dụng tùy chỉnh và cấu hình tối ưu tương ứng.
Cú pháp:
atune-adm define <loại_dịch_vụ> <tên_ứng_dụng> <tên_kịch_bản> <đường_dẫn_profile>
Ví dụ:
atune-adm define test_service test_app test_scenario ./example.conf
4.4.2 collection
Thu thập thông tin tài nguyên hệ thống và trạng thái OS khi ứng dụng chạy, lưu kết quả vào tệp CSV.
Cú pháp:
atune-adm collection [TÙY_CHỌN]
Ví dụ:
atune-adm collection --filename name --interval 5 --duration 1200 --output_path /home/data --disk sda --network eth0 --app_type test_type
4.4.3 train
Huấn luyện mô hình từ dữ liệu đã thu thập. Cần ít nhất hai loại dữ liệu ứng dụng.
Cú pháp:
atune-adm train [TÙY_CHỌN]
Ví dụ:
atune-adm train --data_path /home/data --output_file /usr/libexec/atuned/analysis/models/new-model.m
4.4.4 undefine
Xóa profile tùy chỉnh.
Cú pháp:
atune-adm undefine <profile>
Ví dụ:
atune-adm undefine test_service-test_app-test_scenario
4.5 Thao tác với Profile
4.5.1 Truy vấn profile
Xem nội dung profile.
atune-adm info web-nginx-http-long-connection
4.5.2 Cập nhật profile
Cập nhật nội dung tối ưu của profile bằng tệp mới.
atune-adm update test_service-test_app-test_scenario ./new.conf
4.5.3 Kích hoạt profile
Kích hoạt profile để áp dụng cấu hình.
atune-adm profile web-nginx-http-long-connection
4.5.4 Khôi phục profile
Quay lại cấu hình mặc định ban đầu.
atune-adm rollback
4.6 Cập nhật cơ sở dữ liệu
Cập nhật cơ sở dữ liệu hệ thống.
atune-adm upgrade /đường/dẫn/new_sqlite.db
4.7 Kiểm tra thông tin hệ thống
Kiểm tra CPU, BIOS, OS, card mạng, v.v.
atune-adm check
4.8 Tự động tối ưu tham số
Sử dụng tệp dự án để tìm kiếm không gian tham số động.
atune-adm tuning [TÙY_CHỌN] <PROJECT_YAML>
Đảm bảo tệp cấu hình server.yaml đã được đặt trong /etc/atuned/tuning/ và client.yaml ở thư mục bất kỳ trên máy khách.
Ví dụ thực hiện tối ưu:
atune-adm tuning --project compress --detail compress_client.yaml
Khôi phục cấu hình ban đầu:
atune-adm tuning --restore --project compress
5. Thực hành tối ưu thuật toán nén với A-Tune
5.1 Chuẩn bị dữ liệu
cd ~/A-Tune/examples/tuning/compress/
wget http://cs.fit.edu/~mmahoney/compression/enwik8.zip
sh prepare.sh enwik8.zip
Sau khi chạy, thư mục sẽ chứa tệp enwik8.zip, thư mục enwik8, tệp prepare.sh, compress.py, compress_client.yaml và compress_server.yaml.
Kiểm tra hiệu suất cơ bản:
python3 compress.py
Kết quả hiện ra thời gian nén (~4.6 giây) và tỷ lệ nén (~2.7 lần).
5.2 Sao lưu tệp gốc
cp compress.py{,.bak}
5.3 Thực hiện tối ưu
atune-adm tuning --project compress --detail compress_client.yaml
Quá trình chạy khoảng 2 phút và đưa ra cấu hình tối ưu, thay đổi tham số compressLevel từ 1 lên 6, giúp cải thiện tỷ lệ nén.
So sánh sự khác biệt:
diff compress.py compress.py.bak
5.4 Giải thích kết quả
- Chỉ số đánh giá (client.yaml):
time(thời gian nén) vàcompress_ratio(tỷ lệ nén). Thời gian càng ngắn, tỷ lệ càng cao thì hiệu suất càng tốt. - Tham số có thể điều chỉnh (server.yaml):
compressLevel(mức nén từ 1 đến 9) vàcompressMethod(phương pháp nén: bz2, zlib, gzip).