Thiết kế chương trình

Một phần của tài liệu Dự đoán hiệu năng Web Services sử dụng phân tích hồi quy Gaussion Process và mô hình hàng đợi (Trang 58)

Trong phần này ta sẽ trình bày về thiết kế các module trong chương trình nhằm thực hiện phương pháp dự đoán hiệu năng nêu ở trên. Ta có thể phân chia chương trình thành 7 module chính như sau:

- Module thu thập hiệu năng Web Service: Module này đóng vai trò kiểm thử hiệu năng hệ thống Web Services, thực hiện thu thập các giá trị thời gian đáp ứng theo các tốc độ tới khác nhau. Module này có hai lớp: một là lớp đóng vai trò người sử dụng sinh ra các yêu cầu SOAP gửi tới Server dịch vụ; lớp thứ hai đóng vai trò điều khiển việc sinh các lớp người sử dụng theo một tốc độ tới cho trước. Lớp này sử dụng Thread để điều khiển tốc độ tới này. Kết quả của việc thực thi module này sẽ xuất ra file excel theo định dạng đã được thống nhất.

- Module xây dựng mô hình dữ liệu vào: Module này lấy đầu vào là file excel được xuất ở module thu thập hiệu năng Web Service. Module này có chức năng đọc dữ liệu từ file excel, thực hiện tính toán cần thiết để xây dựng mô hình tín hiệu, và mô hình nhiễu nêu trong công thức (2-6) và (2-11). Phân chia bộ dữ liệu thành hai tập, tập huấn luyện và tập kiểm chứng.

- Module thực hiện phân tích mô hình hàng đợi: Module này nhận đầu vào là tập dữ liệu huấn luyện. Module này có chức năng thực hiện đánh giá các tham số của mô hình hàng đợi sử dụng phương pháp Gradient liên hợp. Lựa chọn các điểm lấy mẫu mới với giá trị tốc độ tới phù hợp và đưa ra bộ dữ liệu mới chứa các cặp giá trị tốc độ tới và thời gian đáp ứng được dự đoán theo mô hình này.

- Module thực hiện phân tích hồi quy Gaussian Process: Module này nhận đầu vào là bộ dữ liệu đã làm giàu, có chức năng thực hiện các bước của phân tích hồi quy Gaussian Process. Module này có hai lớp chính: một là lớp “kernels” chứa các hàm hiệp phương sai được nêu trong phần 2.2.3.1 kèm các đặc tính của các hàm hiệp phương sai này như Gradient, số lượng tham số, công thức tính giá trị,....Lớp thứ hai là lớp “GaussianProcess” chứa các xử lí để thực hiện đánh giá các tham số cho hàm hiệp phương sai và thực hiện quy trình phân tích hồi quy nêu trong phần 2.2.3.3.

- Module dự đoán hiệu năng Web Services: Đây là module chính, chứa các luồng điều khiển, phối hợp các module khác với nhau nhằm thực hiện phương pháp dự đoán theo bước nêu trong phần 2.2 chương 2.

- Module log: Ghi lại thông tin các tham số, giá trị các biến cần thiết sinh ra trong các bước thực hiện phương pháp theo thứ tự. Ghi lại các thông tin lỗi nếu có. Các thông tin ghi lại này là căn cứ để tổng hợp kết quả dự đoán.

- Module hiển thị kết quả: Module này nhận các kết quả đầu ra của phương pháp, thực hiện vẽ các đồ thị nhằm hiển thị trực quan các kết quả của phương pháp dự đoán.

Hình vẽ dưới đây mô tả luồng dữ liệu (các đường mũi tên đen) và luồng điều khiển (các đường mũi tên đỏ) giữa các modules:

Hình 14: Biểu đồ luồng dữ liệu và luồng điều khiển giữa các modules

 Môi trường cài đặt phương pháp dự đoán:

- Cài đặt trên máy tính cá nhân

- Hệ điều hành Linux với bản phân phối Ubuntu 11.04

- Ngôn ngữ lập trình: Python

- Mã nguồn mở phân tích hồi quy Gaussian Process viết bằng Python:

http://www-kd.iai.uni-bonn.de/index.php?page=software_details&id=19

Mã nguồn mở này được Marion Neumann, Zhao Xu và Kristian Kersting cài đặt khi thực hiện phương pháp phân tích hồi quy Gaussian Process quan hệ, trong đó

Thu thập hiệu năng Web Services Xây dựng mô hình dữ liệu vào Phân tích mô hình hàng đợi Dự đoán hiệu năng Web Services Phân tích hồi quy Gaussian Process Hiển thị kết quả Yêu cầu dữ liệu hiệu năng Dữ liệu hiệu năng Tập huấn luyện Yêu cầu dữ liệu vào Yêu cầu

dữ liệu vào Tập huấn luyện Yêu cầu

dữ liệu mới Dữ liệu mới

Gửi dữ liệu làm giàu & y/c thực thi

Kết quả dự đoán Kết quả dự đoán Yêu cầu hiển thị Ghi lại các thông tin (log) Dữ liệu

bao gồm cả cài đặt cho phương pháp phân tích hồi quy Gaussian Process chuẩn bằng Python.

- Framework mã nguồn mở triển khai Web Service bằng Python “SOAPpy”: http://pypi.python.org/pypi/SOAPpy/

Đây là công cụ cho phép xây dựng các SOAP client và SOAP server bằng Python một cách nhanh chóng. Ta sử dụng framework này trong việc tạo các SOAP client kết nối tới Web Service, gửi yêu cầu, và đo đạc thời gian đáp ứng của các yêu cầu này.

 Công sức cài đặt của tác giả:

- Thực hiện code module thu thập hiệu năng của Web Service theo quy trình nêu trong phần 2.2.2 sử dụng SOAPpy tạo Client giao tiếp với Server dịch vụ. Sử dụng lập trình song song Thread trong Python để điều khiển quá trình tới của người dùng, tạo tốc độ tới mong muốn. Ví dụ muốn tạo ra tốc độ tới 1 cust/s, cứ sau 1s ta tạo một Thread để sinh ra một Client gửi yêu cầu tới Server và thu thập thời gian đáp ứng. Lí do phải sử dụng lập trình song song ở đây là vì thời gian đáp ứng của Web Services có thể lên tới đơn vị giây. Nếu lập trình tuần tự ta phải chờ Web Service phản hồi mới có thể gửi tiếp yêu cầu lên Server được. Do đó không thể tạo các tốc độ tới nhỏ hơn thời gian đáp ứng của Web Service. Ngược lại khi phát sinh Thread ta không cần quan tâm tới việc thời gian đáp ứng là lớn hay nhỏ nữa, mà có thể sinh ra các tốc độ tới nhỏ ở mức độ cho phép nào đó. Xuất các kết quả đo đạc hiệu năng ra file excel.

- Thực hiện code module xây dựng mô hình dữ liệu vào cho phương pháp dự đoán được trình bày trong phần 2.2.2. Đọc file excel chứa dữ liệu hiệu năng, thực hiện các tính toán cần thiết, phân chia tập dữ liệu thành hai tập: tập huấn luyện và tập kiểm chứng.

- Tích hợp công cụ mã nguồn mở phân tích hồi quy Gaussian Process đề cập ở trên vào phần code của chương trình. Do Python là ngôn ngữ có tính đóng gói cao nên việc tích hợp này là dễ dàng, ta chỉ cần tốn một ít thay đổi nhỏ trong tham số truyền vào sao cho hợp với mô hình và phương pháp đề ra.

- Thực hiện code module phân tích mô hình hàng đợi sử dụng phương pháp Gradient liên hợp không tuyến tính trong việc tối ưu hóa hàm sai số bình phương. Phương pháp Gradient liên hợp không tuyến tính được tích hợp sẵn trong công cụ phân tích hồi quy Gaussian Process ở trên, ta sẽ bóc tách phần code thực thi phương pháp để cho vào module phân tích mô hình hàng đợi này. Sau khi đánh giá các tham số sẽ sinh ra các bộ dữ liệu mới một cách phù hợp.

- Thực hiện code các luồng điều khiển để thực hiện phương pháp dự đoán hiệu năng Web Service như trình bày trong phần 2.2.

- Thực hiện code module ghi lại các tham số, giá trị các biến trong từng bước thực hiện. Kết quả được ghi ra file log.

- Thực hiện code module hiển thị kết quả dự đoán bằng đồ thị sử dụng thư viện đồ họa Python matplotlib.

Một phần của tài liệu Dự đoán hiệu năng Web Services sử dụng phân tích hồi quy Gaussion Process và mô hình hàng đợi (Trang 58)