Công cụ mô phỏng

Một phần của tài liệu NGHIÊN cứu mô PHỎNG và TÍNH GIÁ THÀNH (Trang 41)

Hình 13: Mô hình hoạt động của SimGrid

Chúng tôi cũng lựa chọn sử dụng chƣơng trình mô phỏng có tên là SimGrid [17] để thực hiện đánh giá hiệu năng ứng dụng. Mô hình hoạt động của SimGrid đƣợc biểu hiện nhƣ Hình 13 (nguồn [17]). Trong đó tập các ứng dụng chuẩn đều cài đặt MPI (Message Passing Interface) đƣợc chạy thử nghiệm trong thực tế nhằm lấy

42

mẫu thông tin hoạt động lƣu trữ trong các file trace. SimGrid cung cấp công cụ lấy mẫu, ghi log thông tin hoạt động của một ứng dụng bất kì. Các file trace này sau đó là đầu vào cho môi trƣờng giả lập SMPI bằng cách off-line (từ file đƣợc lƣu trữ từ trƣớc) hoặc on-line (trực tiếp trong quá trình thực thi ứng dụng). Mặt khác, SimGrid cũng cung cấp công cụ mô tả cấu hình mạng liên kết dựa trên mô tả trong file có định dạng xml. Kết quả giả lập của SMPI mô tả quá trình hoạt động của mạng liên kết cũng đƣợc ghi ra một file trace theo thời gian. Kết quả này đƣợc sử dụng để phân tích, đánh giá hiệu năng của mạng liên kết.

43

CHƢƠNG 3: CÔNG CỤ MÔ PHỎNG SIMGRID 3.1. Giới thiệu sơ lƣợc về các công cụ mô phỏng mạng

Trong nghiên cứu mô phỏng hoạt động để kiểm nghiệm hay đề xuất thuật toán mới trong mạng máy tính, việc kiểm tra đánh giá bằng thực nghiệm thông qua mô phỏng là hết sức quan trọng. Vì chi phí thực nghiệm trực tiếp trong thực tế thƣờng là rất cao, nên thực nghiệm mô phỏng là cách duy nhất để đảm bảo nghiên cứu có tính thực tiễn đáng tin cậy mà tránh đƣợc chi phí lớn. Hệ thống mô phỏng cần đảm bảo các yếu tố cơ bản sao cho sát thực nhất, tƣơng tự nhƣ một thực tiễn với qui mô thu nhỏ. Để hỗ trợ cho mô phỏng các hệ thống mạng, trên thế giới, đã có nhiều nghiên cứu tập trung vào xây dựng công cụ mô phỏng hệ thống mạng với các hệ công cụ nổi tiếng nhƣ NS2, OMNET++, OpNET, Simgrid…

NS2 (Network simulator version 2) là một công cụ mô phỏng mạng phổ biến nhất với hơn 45% các nhà nghiên cứu sử dụng. NS2 đƣợc phát triển tại trƣờng đại học UC Berkely, với phiên bản đầu tiên bắt đầu từ năm 1989. Nó sử dụng cơ chế điều khiển sự kiện rời rạc hƣớng đối tƣợng (object-oriented discrete event simulator) để thực hiện quá trình mô phỏng. NS2 đƣợc viết dựa trên hai ngôn ngữ lập trình, C++ và OTcl, trong đó, C++ đƣợc dùng để xây dựng phần lõi hệ thống, thực hiện các giao thức và mở rộng thƣ viện NS2. Trong khi đó, là một ngôn ngữ bậc cao (kiểu script) hƣớng đối tƣơng, OTcl đƣợc dùng để tạo kịch bản và điều khiển môi trƣờng mô phỏng (nhƣ việc quy định định dạng các thông tin đầu vào, đầu ra, …). Một trong những ƣu điểm nổi bật của NS2 là đƣợc thiết kế khá mở, cho phép những ngƣời sử dụng chuyên gia có thể mở rộng, tích hợp thêm cac module chuyên dụng mới. NS2 cung cấp một thƣ viện các giao thức truyền thông khá phong phú ở tất cả các tầng nhƣ: tầng MAC (Ethernet, 802.11); tầng internet (các giao thức định tuyến nhƣ AODV, DSR, Dijktra, …); tầng chuyển vận (TCP, UDP); tầng ứng dụng (FTP, Telnet, http, …). NS2 hỗ trợ khá tốt cho các mạng có dây và một số mạng không dây truyền thống do những thế hệ mạng này đã ra đời từ lâu và hoạt động theo những bộ giao thức chuẩn cố định.

44

OMNeT++ là viết tắt của cụm từ Objective Modular Network Testbed in C++. OMNeT++ là một ứng dụng cung cấp cho ngƣời sử dụng môi trƣờng để tiến hành mô phỏng hoạt động của mạng. Mục đích chính của ứng dụng là mô phỏng hoạt động mạng thông tin, tuy nhiên do tính phổ cập và linh hoạt của nó, OMNeT++ còn đƣợc sử dụng trong nhiều lĩnh vực khác nhƣ mô phỏng các hệ thống thông tin phức tạp, các mạng kiểu hàng đợi (queueing networks) hay các kiến trúc phần cứng... OMNeT++ cung cấp sẵn các thành phần tƣơng ứng với các mô hình thực tế. Các thành phần này (còn đƣợc gọi là các module) đƣợc lập trình theo ngôn ngữ C++, sau đó đƣợc tập hợp lại thành những thành phần hay những mô hình lớn hơn bằng một ngôn ngữ bậc cao (NED). OMNeT++ hỗ trợ giao diện đồ hoạ, tƣơng ứng với các mô hình cấu trúc của nó đồng thời phần nhân mô phỏng (simulation kernel) và các module của OMNeT++ cũng rất dễ dàng nhúng vào trong các ứng dụng khác.

Trong khi NS2, OMNET++ là các công cụ mô phỏng miễn phí thì bộ công cụ OpNET lại là phần mềm thƣơng mại. OPNET đƣợc phát triển bởi công ty OPNET Technologies, Inc. Đây là một công cụ phần mềm mạnh đƣợc sử dụng để mô phỏng mạng, đã đƣợc các nhà nghiên cứu khoa học trên thế giới đánh giá cao và những kết quả mô phỏng bằng Opnet đã đƣợc công nhận trên nhiều tờ báo khoa học và diễn đàn công nghệ thế giới. Opnet có chứa một lƣợng thƣ viện rất lớn về các mô hình mạng, mô hình node, mô hình liên kết, bao trùm từ mạng hữu tuyến cho tới mạng vô tuyến với rất nhiều các giao thức sẵn có. Opnet đƣợc thiết kế với cơ sở dữ liệu phân lớp và hƣớng đối tƣợng, Opnet có giao diện GUI tạo điều kiện tƣơng tác dễ dàng hơn cho việc sử dụng để nghiên cứu và mô phỏng mạng. Ngoài việc mô phỏng mạng và các giao thức của mạng, Opnet còn cung cấp cho ta nhiều công cụ cho phép phân tích hiệu suất, tính toán đƣờng đi, khởi tạo lƣu lƣợng, so sánh bằng đồ thị,… vô cùng linh hoạt, từ đó giúp ta không những chỉ tạo lập các hệ thống mạng mà còn giúp ta đánh giá hoạt động của các hệ thống mạng đó.

SimGrid là một bộ công cụ cung cấp các chức năng cốt lõi cho việc mô phỏng các ứng dụng phân tán trong môi trƣờng phân tán không đồng nhất. Mục tiêu

45

cụ thể của dự án là để tạo điều kiện nghiên cứu trong lĩnh vực hệ thống quy mô lớn song song và phân tán, chẳng hạn nhƣ Grids, Cloud, hệ thống P2P hay HPC. Nó có thể đƣợc sử dụng để đánh giá heuristics, các ứng dụng mẫu thử nghiệm hoặc thậm chí đánh giá các ứng dụng MPI. Simgrid là phần mềm hoàn toàn miễn phí.

Lịch sử phát triển Simgrid:

- Simgrid v1: phiên bản đầu tiền của SimGrid, là một công cụ mô phỏngchỉ đơn giản là mô phỏng mạng ad-hoc, đƣợc xây dựng và phát triển Arnaud Legrand (sinh viên tốt nghiệp năm nhất thuộc trƣờng đại học Ecole Normale – Lyon – Pháp ) vào năm 1999, đề tài dƣới sự hƣớng dẫn của Henri Casanova (nhóm nghiên cứu AppLeS thuộc khoa khoa học máy tính và kỹ thuật thuộc trƣờng đại học California – San Diego)

- Simgrid v2: Phát triển bởi Arnaud Legrand vào năm 2001 (đề tài luận án tiến sĩ). Nó đƣợc gọi là SimGrid v2 hay MSG (Meta-SimGrid)

- Simgrid v3: Phát triển bởi Martin Quinson, bảo vệ luận văn tiến sĩ năm 2006 của trƣờng đại học Ecole Normale. Sau đó Martin Quinson và Christophe Thiery cùng phát triển tiếp

Một số kết quả so sánh giữa Simgrid và các công cụ mô phỏng khác (nguồn [15]):

46

Hình 15: So sánh thời gian thực thi với công cụ GTNetS (nguồn [14])

3.2. Tổng quan về kỹ thuật mô phỏng

Mục đích cuối cùng của mô phỏng là giúp đánh giá hiệu năng của một hệ thống thông qua một mô hình của hệ thống đó. Trƣớc hết, ta xem xét mối liên quan giữa các khái niệm hệ thống (system), mô hình (model) và mô phỏng [20].

3.2.1 Hệ thống, mô hình và mô phỏng

Hệ thống đƣợc định nghĩa là một tập hợp các phần tử có mối quan hệ với nhau, tƣơng tác với nhau để thực hiện một công việc, chức năng nào đó. Tùy thuộc vào mục đích cần nghiên cứu về hệ thống là gì mà các phần tử của hệ thống có thể khác nhau. Ta định nghĩa trạng thái của một hệ thống là tập hợp các biến cần thiết để mô tả hệ thống tại một thời điểm nhất định, có liên quan đến các đối tƣợng cần nghiên cứu của hệ thống.

47

Có 2 loại hệ thống là liên tục rời rạc. Hệ thống liên tục là hệ thống có các biến trạng thái thay đổi liên tục theo thời gian. Ví dụ nhƣ biến về nhiễu trên kênh truyền. Hệ thống rời rạc là hệ thống có các biến trạng thái chỉ thay đổi tại các thời điểm rời rạc về mặt thời gian. Để nghiên cứu, đánh giá một hệ thống, có các cách tiếp cận nhƣ trên hình vẽ.

a) Thử nghiệm trên hệ thống thực và thử nghiệm trên mô hình của hệ thống:

Về nguyên tắc, có thể thực hiện các thí nghiệm trực tiếp trên các hệ thống thực. Tuy nhiên, có 2 khó khăn đối với phƣơng pháp này là nó có thể gây hậu quả nghiêm trọng đến hệ thống thực, nhất là các hệ thống viễn thông liên quan đến thông tin quan trọng, liên quan đến cƣớc…hoặc trong một số trƣờng hợp thì hệ thống muốn nghiên cứu chƣa hề tồn tại, mà ngƣời ta lại muốn nghiên cứu hiệu quả của các hệ thống đề xuất. Với các lý do đó, mô hình của hệ thống thực sẽ đƣợc xây dựng, và thay vì nghiên cứu trên hệ thống thực thì sẽ nghiên cứu trên mô hình của hệ thống. Mô hình của một hệ thống có thể coi là một đối tƣợng có cấu trúc, chức năng, hoạt động tƣơng tự nhƣ hệ thống thật. Nó thƣờng chỉ phản ánh các mặt quan

48

trọng nhất của hệ thống, và không nhất thiết phải giống hoàn toàn với hệ thống thật..

b) Mô hình vật lý và mô hình toán học:

Mô hình vật lý ở đây là các loại mô hình nhƣ buồng lái máy bay cho phi công tập lái. Tuy nhiên loại mô hình này thƣờng không đƣợc dùng cho mục đích phân tích, nghiên cứu các hệ thống. Mô hình toán học, biểu diễn hệ thống dƣới dạng các quan hệ logic... Nếu mô hình toán học là chính xác, thì khi tác động vào các quan hệ logic của mô hình, mô hình sẽ đƣa đến kết quả nhƣ hệ thống thật.

c) Phƣơng pháp phân tích (analytical) và mô phỏng:

Sau khi đã xây dựng đƣợc mô hình toán học, chúng ta cần phải xem xét mô hình đó có thể trả lời đƣợc các câu hỏi mà ta quan tâm về hệ thống hay không. Nếu đó là mô hình đơn giản, có thể dựa trên các mối quan hệ logic của mô hình để đƣa đến một kết quả chính xác thông qua phƣơng pháp phân tích, thực ra là thông qua việc giải các phƣơng trình toán học. Đây là phƣơng pháp đƣa lại kết quả chính xác và ít tốn kém nhất, tuy nhiên trong rất nhiều trƣờng hợp không thể áp dụng đƣợc vì nó quá phức tạp, ví dụ nhƣ trong trƣờng hợp cần giải bài toán cho quá nhiều nút mạng, quá nhiều biến số. Trong các trƣờng hợp này, phải sử dụng đến phƣơng pháp mô phỏng. Mô hình lúc đó đƣợc gọi là mô hình mô phỏng (simulation model). Mô hình mô phỏng đƣợc phân ra làm các loại sau:

+ Mô hình tĩnh và mô hình động: Mô hình mô phỏng tĩnh là mô hình biểu diễn hệ thống tại một thời điểm nhất định, hay nói cách khác là khi đó thời gian không đóng vai trò gì trong mô hình. Ví dụ của loại này là mô hình Monte Carlo. Ngƣợc lại, mô hình mô phỏng động biểu diễn hệ thống theo thời gian. Mô hình mô phỏng động phức tạp hơn, tuy nhiên cho phép các mô phỏng gồm nhiều quá trình xảy ra đồng thời trong hệ thống.

+ Mô hình xác định (deterministic) và mô hình ngẫu nhiên (stochastic): Nếu mô hình mô phỏng không có thành phần ngẫu nhiên thì nó đƣợc gọi là mô hình xác định. Mô hình xác định cho phép xác định đƣợc kết quả khi biết rõ đầu vào và mô

49

hình. Nếu đầu vào của mô hình có bất kỳ môt thành phần ngẫu nhiên, nó đƣợc gọi là mô hình ngẫu nhiên (stochastic). Mô hình này cũng cho kết quả là các giá trị ngẫu nhiên.

+ Mô hình liên tục và mô hình rời rạc: Cũng tƣơng tự nhƣ đối với định nghĩa của hê thống. Thông thƣờng một mô hình của một hệ thống có thể đƣợc coi là liên tục hoặc rời rạc tùy thuộc vào các đối tƣợng cụ thể của hệ thống cần nghiên cứu.

3.2.2 Các bƣớc trong mô phỏng một hệ thống

Khi sử dụng mô phỏng để nghiên cứu, đánh giá một hệ thống, cần phải trải qua các bƣớc sau:

a) Xác định rõ bài toán mô phỏng

Trƣớc khi thực hiện xây dựng mô hình của bất cứ hệ thống nào, cần nắm rõ hoạt động cũng nhƣ mối quan hệ bên trong của hệ thống đó. Cũng cần phải xác định rõ các mục tiêu cần đạt đƣợc của thực hiện mô phỏng.

b) Xây dựng mô hình

Sau khi xác định rõ đƣợc bài toán, bƣớc tiếp theo là xây dựng nên mô hình mô phỏng. Bƣớc này chỉ là xây dựng nên các mối quan hệ logic giữa các phần tử trong mô hình, đầu vào và đầu ra của mô hình. Cần phải xác định đƣợc mô hình cần chi tiết đến mức độ nào, phần nào của hệ thống phải trừu tƣợng hóa. Trong thực tế, không mô hình nào biểu diễn chính xác toàn bộ hoạt động của hệ thống, mà thƣờng sẽ chỉ xấp xỷ chính xác với một số thực thể cần nghiên cứu của hệ thống. Hay nói cách khác, ta cần phải đƣa các điều kiện ràng buộc ban đầu vào mô hình mô phỏng.

c) Thu thập dữ liệu cho mô hình

Để thực hiện mô phỏng, có thể lấy các dữ liệu cho đầu vào từ các giá trị đầu vào đo đƣợc của một hệ thống thật (lấy mẫu), hoặc sử dụng các biến ngẫu nhiên. Việc tạo nên các con số ngẫu nhiên đầu vào này đóng vai trò rất quan trọng vì thông thƣờng chỉ sử dụng các con số giả ngẫu nhiên, rất dễ lặp lại và dẫn đến kết quả không chính xác. Thƣờng gặp nhất là khi mô phỏng các sự kiện ít xảy ra, ví dụ nhƣ

50

lỗi bit trên kênh truyền chất lƣợng tốt, do đó thời gian mô phỏng rất lâu, sử dụng chuỗi các con số ngẫu nhiên rất lớn nên việc lặp lại chuỗi ngẫu nhiên là dễ xảy ra.

d) Biên dịch mô hình

Đây chính là quá trình lập trình, xây dựng nên phần mềm biểu diễn mô hình mô phỏng. Có thể sử dụng các ngôn ngữ lập trình bậc cao nhƣ C, C++ hoặc sử dụng kết hợp với các công cụ mô phỏng là các phần mềm sẵn có nhƣ OPNET, NS-2, OMNET++, SIMGRID…để xây dựng nên mô hình.

e) Kiểm tra (verification)

Để đảm bảo quá trình lập trình biên dịch mô hình là chính xác. Thực ra bƣớc này giống nhƣ quá trình tìm lỗi (debug), dựa trên các đầu vào khác nhau, dựa trên lƣu đồ của mô hình để kiểm tra tính chính xác của quá trình biên dịch mô hình sang chƣơng trình phần mềm. Ngoài hậu quả là làm sai kết quả, việc biên dịch không tốt có thể dẫn đến thời gian thực hiện mô phỏng sẽ là rất lâu, không khả thi để thực hiện.

f) Xác minh tính chính xác của mô hình (validation)

Để đảm bảo mô hình đã xây dựng hoạt động giống với hệ thống thật, từ đó có thể tin tƣởng vào kết quả của mô phỏng trên mô hình đó. Đây là bƣớc rất quan trọng vì các số liệu đạt đƣợc từ mô phỏng sẽ không có ý nghĩa gì nếu nó không phản ánh đúng kết quả của hệ thống thật. Phƣơng pháp thƣờng dùng hơn là so sánh với dữ liệu lấy đƣợc từ hệ thống thật. Nếu hệ thống thật cần so sánh chƣa tồn tại, có thể đơn giản hóa các điều kiện ràng buộc về tham số đầu vào để có thể so sánh kết quả mô phỏng với kết quả có đƣợc thông qua phân tích tính toán (thƣờng là các khoản giới hạn dƣới hoặc trên).

g) Thử nghiệm trên mô hình

Ở bƣớc này cần xác định tập các tham số cần đánh giá trong mỗi lần thử nghiệm. Đối với các tham số, cũng cần xác định phạm vi thay đổi cũng nhƣ tham số

51

nào cố định, tham số nào thay đổi. Mục đích của bƣớc này là thu đƣợc càng nhiều thông tin cần thiết mà phải thực hiện càng ít lần chạy mô phỏng càng tốt

h) Phân tích kết quả thu đƣợc

Thông qua mô phỏng, ta có thể có đƣợc giá trị thống kê (trung bình, phƣơng sai), phạm vi biến thiên…của các tham số trên. Nếu sử dụng các phần mềm mô

Một phần của tài liệu NGHIÊN cứu mô PHỎNG và TÍNH GIÁ THÀNH (Trang 41)