6. Kết quả nghiên cứu, đóng góp khoa học của luận án
2.2.1. Sự trẻ hóa của hệthống phần mềm
Trong thực tế, chúng ta hoàn toàn có thể gặp một ứng dụng phần mềm chạy liên tục trong một khoảng thời gian dài, ví dụ như ứng dụng phân tích khoa học có thể chạy trong vài ngày hoặc vài tuần hay ứng dụng máy chủ trong kiến trúc máy chủ-máy khách được xây dựng để hoạt động liên tục. Khi đó tiến trình tương ứng với phần mềm sẽ bị lão hóa (aging), nói cách khác là bị suy giảm từ từ về khả năng sử dụng tài nguyên của hệ thống [18]. Nguyên nhân của sự lão hóa bao gồm: sự rò rỉ bộ nhớ (xảy ra do tiến trình quản lý bộ nhớ thiếu hiệu quả), quản lý khóa file không an toàn, sự không thống nhất trong truy nhập và thao tác file, v.v.. Sự lão hóa phần mềm sẽ ảnh hưởng đến hiệu năng của ứng dụng và thậm chí khiến ứng dụng không tiếp tục hoạt động được nữa [94].
44
Nếu một ứng dụng được xây dựng trong môi trường phát triển hoàn hảo và hoạt động theo đúng kịch bản làm việc, tiến trình tương ứng sẽ không bị lão hóa. Tuy nhiên, các hệ thống thực tế hiếm khi đạt được điều đó. Các tiến trình của chúng sẽ bị lão hóa trong môi trường thực chạy. Chú ý rằng sự lão hóa phần mềm và sự lão hóa tiến trình có những khác biệt nhỏ. Sự lão hóa phần mềm liên quan đến việc mã nguồn trở nên không tương thích khi yêu cầu bị thay đổi sau nhiều năm. Ngược lại, sự lão hóa tiến trình liên quan đến sự suy giảm hoạt động của các chức năng của phần mềm sau quá trình hoạt động trong vài ngày hoặc vài tuần.
Hình 2.5. Mô hình trạng thái của hệ thống trẻ hóa
Ngược lại với sự lão hóa của tiến trình phần mềm, "sự trẻ hóa phần mềm (software rejuvenation)", là một khái niệm liên quan đến khởi động lại phần mềm một cách định kì và đưa hệ thống về trạng thái sạch sẽ ban đầu sau mỗi lần bảo trì [96][83]. Kỹ thuật này còn có một tên gọi khác là "sự bảo trì phòng ngừa (software preventive maintenance)". Ta có Hình 2.5 mô tả tổng quan bốn trạng thái của hệ thống khi áp dụng kĩ thuật trẻ hóa. Trong kỹ thuật này, thay vì để hệ thống xảy ra sự cố khi tiến trình bị lão hóa, chúng ta có thể thực hiện việc trẻ hóa tiến trình nhằm đảm bảo sự hoạt động bình thường. Hiện kỹ thuật trẻ hóa phần mềm đã được ứng dụng trên rất nhiều kiến trúc phần mềm khác nhau như kiến trúc client-server [96], kiến trúc cluster [48], kiến trúc cho máy chủ dựa trên giao thức SOAP [54], v.v..
Ở mục tiếp theo, chúng ta sẽ thực hiện các tính toán đánh giá giá trị các độ đo chất lượng phần mềm như là biến của thời gian thực hiện trẻ hóa.
2.2.2. Phƣơng thức đánh giá độ tin cậy, độ sẵn sàng và độ an toàn của hệ thống phần mềm trẻ hóa
2.2.2.1. Mô hình hóa hệ thống
Chúng ta xét đến một hệ thống theo mô hình khách - chủ (client – server), trong đó hệ thống nhận được các yêu cầu (transaction) từ máy khách và phục vụ các yêu cầu đó. Hệ thống cài đặt một bộ đệm theo dạng hàng đợi, tức cơ chế đến trước phục vụ trước (First Come First Serve), để tiếp nhận các yêu cầu [78]. Tiến trình Markov để mô hình hệ thống phần mềm khi thực hiện kỹ thuật trẻ hóa sẽ bao gồm ba trạng thái như tại Hình 2.6.
- : trạng thái hệ thống hoạt động bình thường: sẵn sàng phục vụ các yêu cầu. - : trạng thái không an toàn, tức trạng thái phần mềm gặp phải những lỗi. Khi
dó phần mềm cần được phục hồi lỗi và không thể phục vụ. - : trạng thái đang trẻ hóa.
Hoàn thành sửa chữa Trẻ hóa Thất bại Hoàn thành trẻ hóa Hoạt động Lỗi tiềm năng Lỗi Trẻ hóa
45
Hình 2.6. Các trạng thái khi thực hiện trẻ hóa
Từ các kí hiệu trạng thái trên, ta có các công thức để tính toán các độ đo chất lượng của hệ thống như sau:
Độ sẵn sàng: xác suất hệ thống sẵn sàng phục vụ các yêu cầu
(2.7) Độ tin cậy: xác suất hệ thống hoạt động không thất bại
(2.8) Độ an toàn: xác suất hệ thống không thất bại
(2.9)
Tiếp theo, quá trình xử lý các yêu cầu được gửi tới sẽ được mô hình hóa bằng tiến trình Markov trong đó mỗi trạng thái tương ứng với một số lượng yêu cầu còn lại trong hàng đợi. Chúng tôi sử dụng các kí hiệu sau khi mô hình quá trình phục vụ các yêu cầu của phần mềm bằng tiến trình Markov như sau.
- : thời gian từ khi phần mềm khởi động mới hoặc khởi động lại sau khi trẻ hóa lần kế trước đến khi ngừng nhận yêu cầu để chuẩn bị thực hiện trẻ hóa. - : xác suất chuyển từ trạng thái sang trạng thái .
- : xác suất chuyển từ trạng thái sang trạng thái .
- : xác suất có phép chuyển đổi trong hàng đợi tại thời điểm , cũng chính là xác suất ở trạng thái tại thời điểm nếu sử dụng tiến trình Markov mô hình cho các trạng thái liên quan đến số yêu cầu còn lại trong hàng đợi.
- : xác suất ở trạng thái tại thời điểm .
- : tổng số yêu cầu máy chủ có thể cho vào hàng đợi để phục vụ, bao gồm cả yêu cầu đang được xử lý. Nếu hàng đợi đã đầy thì các yêu cầu mới sẽ bị mất. - : giá trị kì vọng của thời gian hoàn thành tiến trình phục hồi các lỗi, tức hệ
thống ở trạng thái .
- : giá trị kì vọng của thời gian hoàn thành tiến trình bảo trì phòng ngừa, tức hệ thống ở trạng thái .
- : Thời gian khi hệ thống ở trạng thái . Giá trị kì vọng là . - : Tỉ lệ yêu cầu gửi đến máy chủ.
- : Tỉ lệ phục vụ các yêu cầu. - : Xác suất phần mềm hỏng hóc.
46
Khi thực hiện các tính toán tham số, chúng ta xét hai điều khoản khác nhau trong việc xác định thời gian bảo trì phòng ngừa:
Điều khoản I. Trẻ hóa được thực hiện sau một khoảng thời gian hằng số kể từ lúc nó được khởi động mới hoặc khởi động lại sau khi trẻ hóa lần kế trước mà không quan tâm đến bộ đệm trống hay không. Do đó, khoảng thời gian nghỉ giữa hai lần trẻ hóa chính là .
Điều khoản II. Trẻ hóa được chờ để thực hiện sau một khoảng thời gian hằng số . Cụ thể hơn, sau khoảng thời gian , hệ thống sẽ phục vụ nốt các yêu cầu trong hàng đợi trong khoảng thời gian và thực hiện trẻ hóa khi hàng đợi đã rỗng. Do đó, khoảng thời gian nghỉ giữa hai lần trẻ hóa bằng khoảng thời gian cộng với thời gian giải phóng hàng đợi , tức nằm trong khoảng . Có thể thấy vấn đề của điều khoản này là nếu khoảng thời gian giải phóng hàng đợi là quá lâu, hệ thống sẽ gặp trục trặc trước khi được trẻ hóa.
Các tiểu mục tiếp theo sẽ trình bày các tính toán cụ thể khi sử dụng hai tiến trình Markov ở trên để mô hình hóa hệ thống phần mềm trong quá trình trẻ hóa.
2.2.2.2. Các độ đo chất lƣợng của hệ thống phần mềm
Xét tiến trình Markov mô hình hệ thống phần mềm khi thực hiện trẻ hóa. Ta có xác suất chuyển trạng thái từ sang là và xác suất chuyển trạng thái từ sang là . Rõ ràng, hệ thống chỉ có thể chuyển trạng thái từ sang hoặc , do đó . Ngoài ra, sau khi thực hiện xong việc khắc phục lỗi (nếu hệ thống chuyển sang trạng thái ) hoặc trẻ hóa (nếu hệ thống chuyển sang trạng thái ), hệ thống sẽ chuyển về trạng thái . Do đó, . Từ đó ta có ma trận chuyển trạng thái:
( + (2.10) Cho là xác suất trạng thái mà phần mềm ở trạng thái . Từ công thức tính xác suất các trạng thái tại thời điểm từ xác suất các trạng thái tại thời điểm :
(2.11)
Cho , khi đó , ta có phương trình biểu diễn mối quan hệ giữa và :
(2.12)
Giải phương trình (2.12) ta có nghiệm tổng quát:
(2.13) với bất kì. Tuy nhiên, tại một thời điểm, hệ thống chỉ có thể ở 1 trong 3 trạng thái
, hoặc . Chú ý rằng , ta có
, tức ⁄ . Từ đó ta có xác suất hệ thống ở các trạng thái là:
47
(2.14) Ta có các công thức tính toán các độ đo chất lượng của hệ thống như sau.
Độ sẵn sàng:
(2.15)
Thay giá trị của vào ta có:
(2.16)
Độ tin cậy:
(2.17)
Trong đó là khoảng thời gian hệ thống chạy bình thường và là khoảng thời gian bắt đầu từ khi hệ thống ngừng nhận yêu cầu đến khi hệ thống được thực hiện trẻ hóa. Giá trị phụ thuộc vào từng điều khoản khác nhau được xét đến.
Độ an toàn:
(2.18)
Thay giá trị của ta có:
(2.19)
Như vậy, việc tính toán các tham số sẽ dựa vào các giá trị , , , , và . Chúng ta lần lượt xét các giá trị này ở các tiểu mục tiếp theo.
2.2.3. Tính toán các tham số của mô hình 2.2.3.1. Tính toán với điều khoản I 2.2.3.1. Tính toán với điều khoản I
Quá trình phục vụ các yêu cầu được mô hình hóa bằng tiến trình Markov như tại Hình 2.7. Mỗi trạng thái ( ) tương ứng với việc còn yêu cầu trong hàng đợi. Rõ ràng, xác suất hệ thống chuyển từ trạng thái sang trạng thái là , chính bằng xác suất hệ thống nhận thêm 1 yêu cầu mới. Ngược lại, xác suất hệ thống chuyển từ trạng thái sang trạng thái là , chính bằng xác suất hệ thống phục vụ xong 1 yêu cầu, tức số yêu cầu giảm đi 1. Tương ứng với mỗi trạng thái là trạng thái dừng ( ), tức trạng thái hệ thống bị hỏng hóc. Xác suất hệ thống chuyển từ trạng thái i sang trạng thái i’ bằng , chính là xác suất hệ thống bị hỏng hóc. Chú ý rằng tại thời điểm , quá trình sẽ bị hủy do hệ thống được trẻ hóa.
48
Hình 2.7. Tiến trình Markov với
Như đã trình bày khi mô hình hóa, ta có là xác suất có yêu cầu trong hàng đợi, cũng chính là xác suất tiến trình Markov ở trạng thái . Từ tiến trình như trong hình, ta có hệ phương trình chủ Chapman-Kolmogorov để tìm các cho điều khoản I:
Đối với trạng thái 0:
- Có thể chuyển từ trạng thái 1 sang với xác suất .
- Có thể chuyển sang các trạng thái 1 hoặc 0’ với xác suất lần lượt là và .
(2.20) Đối với các trạng thái ( ):
- Có thể chuyển từ các trạng thái hoặc sang với xác suất lần lượt là
và .
- Có thể chuyển sang các trạng thái , hoặc với xác suất lần lượt là , và .
(2.21) Đối với trạng thái :
- Có thể chuyển từ trạng thái sang với xác suất .
- Có thể chuyển sang các trạng thái hoặc với xác suất lần lượt là
và .
(2.22) Đối với các trạng thái ( ): có thể chuyển sang từ trạng thái với
xác suất . 1 2 3 K-1 K 1’ 2’ 3’ K-1’ K’ 0 0’
49
(2.23) Hệ phương trình chủ Chapman-Kolmogorov trên không thể giải một cách chính xác mà chỉ có thể giải gần đúng với điều kiện đầu: , với
và với . Khi đó ta có các xác suất liên quan tới mô hình Markov như sau:
∑
(2.24) và
(2.25)
Ngoài ra, ta có thời gian kì vọng hệ thống ở trạng thái sẽ tính bởi:
∫ [∑
]
(2.26) Thay các tham số trên vào các công thức (2.16) và (2.19) ta có công thức tính độ sẵn sàng và độ an toàn. Ngoài ra, theo điều khoản I, hệ thống được khảo sát trong giai đoạn , do đó độ tin cậy trung bình sẽ là:
(2.27)
2.2.3.2. Tính toán với điều khoản II
Trong trường hợp này cần phân biệt giữa và , do điều khoản II đã giả thiết rằng bảo trì phòng ngừa chỉ khởi động khi và chỉ khi bộ đếm được giải phóng sau khoảng thời gian trôi qua. Trong khoảng thời gian , quá trình phục vụ vẫn được mô hình hóa như tại Hình 2.7. Trong khoảng thời gian , quá trình phục vụ được mô hình hóa bằng tiến trình Markov như tại Hình 2.8. Rõ ràng, khi hàng đợi đã trống thì hệ thống sẽ được thực hiện trẻ hóa, do đó trạng thái 0 nằm trong tập các trạng thái dừng. Tương tự như điều khoản I, từ tiến trình Markov ta có hệ phương trình chủ Chapman-Kolmogorov: (2.28) (2.29) (2.30) (2.31) (2.32)
50
Hình 2.8. Tiến trình Markov với
Tổng hợp hệ phương trình chủ Chapman-Kolmogorov trong khoảng thời gian
và , ta có hệ phương trình chủ Chapman-Kolmogorov để tìm các cho điều khoản II:
(2.33) (2.34) (2.35) (2.36) (2.37) (2.38) Với nếu , ngược lại nếu . Hoàn toàn tương tự cho
nếu , ngược lại nếu . Tương tự điều khoản I, xác suất chuyển trạng thái được tính toán bằng tổng các xác suất tại :
∑
(2.39) và
(2.40) Từ đó ta có thời gian kì vọng hệ thống ở trạng thái sẽ tính bởi:
1 2 3 K-1 K 1’ 2’ 3’ K-1’ K’ 0
51 ∫ [∑ ] ∫ [∑ ] ∫ ∫ [∑ ] (2.41)
Thay các tham số trên vào các công thức (2.16) và (2.19) ta có công thức tính độ sẵn sàng và độ an toàn. Ngoài ra, theo điều khoản II, hệ thống được khảo sát trong giai đoạn , do đó độ tin cậy trung bình sẽ là:
(2.42)
2.2.4. Cài đặt thực nghiệm
Ở các tiểu mục trước, chúng tôi đã trình bày cách xây dựng các mô hình nhằm đánh giá sự ảnh hưởng của tham số tới các độ đo độ tin cậy, độ sẵn sàng và độ an toàn. Để đánh giá sự ảnh hưởng này, chúng ta cố định các tham số:
với giờ. Trong đó MTTF (Mean Time To Failure) là khoảng thời gian trung bình từ khi hệ thống bắt đầu hoạt động đến khi gặp trục trặc. Chúng tôi thực hiện việc cài đặt giải gần đúng hệ phương trình chủ Chapman-Kolmogorov trên ngôn ngữ Matlab.
2.2.4.1. Kết quả mô phỏng 1
Trong thực nghiệm này, chúng tôi sẽ thay đổi để xác định ảnh hưởng đến giá trị của để các độ đo đạt giá trị tối ưu. Tỉ lệ thất bại được giả định là hàm của thời gian thực:
(2.43) là hàm rủi ro của phân phối Weilbull. được cố định bằng 1.5 và được tính toán từ và hàm qua công thức:
* ( )
+ (2.44)
52 ( * (2.45)
chính bằng tỉ lệ phục vụ của một số phần mềm chuyển đổi truyền thông.
Ta có lần lượt các hình vẽ mình họa cho sự thay đổi của giá trị các độ đo độ sẵn sàng, độ an toàn và độ tin cậy khi thay đổi các tham số.
Hình 2.9. Độ sẵn sàng dưới điều khoản I
Hình 2.10. Độ sẵn sàng dưới điều khoản II
Độ sẵn sàng: ta có Hình 2.9 và Hình 2.10 minh họa cho giá trị của độ sẵn sàng dưới 2 điều khoản khác nhau. Chú ý rằng hình vuông màu đen trong hình biểu diễn vị trí độ sẵn sàng đạt giá trị cực đại. Từ đó chúng tôi có các nhận xét:
Độ sẵn sàng ① ② ④ ③ ① ② = 0.15 = 0.35 ③ = 0.55 ④ = 0.85 ∎ cực đ i Độ sẵn sàng ① = 0.15 ② = 0.35 ③ = 0.55 ④ = 0.85 ∎ cự đ i ① ② ④ ③
53
- Đối với cả hai điều khoản, với mọi giá trị của , giá trị càng cao thì độ sẵn sàng càng thấp.
- Đối với cả hai điều khoản:
Với và , độ đo độ sẵn sàng sẽ tăng lên rồi giảm dần. Do đó, giá trị của để độ sẵn sàng lớn nhất sẽ là đỉnh của cung tròn. Với và , độ đo độ sẵn sàng sẽ tăng liên tục khi
tăng. Tức hệ thống càng được bảo trì muộn thì độ sẵn sàng càng cao. Tuy nhiên, tốc độ tăng độ sẵn sàng về sau càng ngày càng giảm.
Hình 2.11. Độ an toàn dưới điều khoản I với
Hình 2.12. Độ an toàn dưới điều khoản I khi thay đổi
Độ an toàn ① ② ④ ③