Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Phát triển với Java thời gian thực, Phần 2: Cải thiện chất lượng dịch vụ Sử dụng Java thời gian thực
Nội dung xem thử
Mô tả chi tiết
Phát triển với Java thời gian thực, Phần 2: Cải thiện chất lượng dịch vụ
Sử dụng Java thời gian thực để giảm bớt độ đa dạng trong các ứng dụng Java
Mark Stoodley, Lãnh đạo Kỹ thuật Thời gian Thực WebSphere, IBM Toronto Lab
Charlie Gracie, Lãnh đạo nhóm Máy ảo J9, IBM
Tóm tắt: Một số ứng dụng Java™ không cung cấp được chất lượng hợp lý của
dịch vụ mặc dù đạt được các mục tiêu hiệu năng khác, chẳng hạn như thời gian trễ
trung bình hoặc thông lượng tổng thể. Bằng cách đưa ra các đoạn dừng hoặc ngắt
không chịu kiểm soát của ứng dụng, ngôn ngữ Java và hệ thống thời gian chạy đôi
khi có thể chịu trách nhiệm về không đáp ứng các độ đo hiệu năng của ứng dụng.
Bài viết này là bài thứ hai trong loạt bài ba phần, giải thích nguồn gốc căn nguyên
của trễ và ngắt trong một JVM và mô tả các kỹ thuật cho phép bạn có thể dùng để
giảm thiểu các căn nguyên, nhằm ứng dụng của bạn cung cấp chất lượng dịch vụ
ổn định hơn.
Tính đa dạng trong một ứng dụng Java — thường gây ra do các đoạn dừng, hoặc
trễ, xảy ra vào những lúc không thể đoán trước được — có thể xảy ra qua ngăn
xếp phần mềm. Các trễ có thể xuất hiện do:
Phần cứng (trong các quá trình xử lý chẳng hạn như nhớ nhanh).
Phần đệm (xử lý của các ngắt quản lý hệ thống chẳng hạn như dữ liệu về
nhiệt độ bộ xử lý trung tâm).
Hệ điều hành (trả lời một ngắt hoặc khai thác một hoạt động thông minh đã
lên lịch thường kì).
Các chương trình khác chạy trên cùng hệ thống.
JVM (gom rác, biên dịch Đúng lúc, và tải lớp).
Chính ứng dụng Java.
Bạn có thể hiếm khi bù lại ở một mức cao cho các trễ do mức thấp hơn gây nên,
vậy nếu bạn cố gắng giải quyết độ đa dạng chỉ ở mức ứng dụng, có thể bạn chỉ cần
chuyển đổi JVM hoặc các trễ của hệ điều hành ở đâu đó mà không giải quyết vấn
đề thực. May mắn là các thời gian chờ đối với các mức thấp hơn có xu hướng
tương đối ngắn hơn các thời gian chờ ở các mức cao, như vậy chỉ khi nào yêu cầu
của bạn đối với việc giảm độ đa dạng là vô cùng nhiều thì bạn mới cần xem xét
thấp hơn JVM hoặc hệ điều hành. Nếu các yêu cầu của bạn không nhiều đến như
vậy, thì bạn có thể gần như chắc chắn tập trung đủ các cố gắng của bạn ở mức
JVM và trong ứng dụng của bạn.
Java thời gian thực cho bạn các công cụ mà bạn cần phải vật lộn với các tài
nguyên biến đổi trong một JVM và trong các ứng dụng của bạn để cung cấp chất
lượng dịch vụ mà những người sử dụng của bạn đòi hỏi. Bài viết này đề cập đến
nguồn gốc của sự đa dạng ở các mức JVM và ứng dụng một cách chi tiết và mô tả
các công cụ và kỹ thuật mà bạn có thể sử dụng để giảm nhẹ tác động của chúng.
Sau đó nó đưa ra một ứng dụng máy chủ Java đơn giản trình bày một số khái niệm
này.
Nhằm vào các nguồn biến đổi
Các nguồn biến đổi ban đầu trong một JVM xuất phát từ tính chất động của ngôn
ngữ Java:
Bộ nhớ không giải phóng hiển hiện do ứng dụng mà thay vào đó được phục
hồi theo định kỳ bởi bộ gom rác.
Các lớp được giải quyết khi ứng dụng sử dụng chúng đầu tiên.
Mã riêng được biên dịch (và có thể được biên dịch lại bằng một Bộ biên
dịch Đúng lúc (Just-in-time (JIT) compiler) khi ứng dụng đang chạy, dựa
trên các lớp và phương thức nào được gọi ra thường xuyên.
Ở mức ứng dụng Java, việc quản lý các xử lí là lĩnh vực chủ yếu liên quan đến độ
đa dạng.
Đoạn dừng gom rác
Khi bộ gom rác chạy để phục hồi bộ nhớ mà chương trình không còn sử dụng nữa,
nó có thể dừng tất cả các xử lí ứng dụng. (Kiểu bộ gom này gọi là một bộ gom
Stop-the-world (Dừng lại tất cả), hay bộ gom STW.) Hoặc nó có thể thực hiện một
số công việc của mình đồng thời với ứng dụng. Trong trường hợp ấy, các tài
nguyên mà bộ gom rác cần có cũng không đủ dùng cho ứng dụng, cho nên việc
gom rác (GC) là nguyên nhân gây dừng và biến đổi đối với hiệu năng ứng dụng
Java, như thường được biết đến. Mặc dù nhiều hình mẫu GC có các ưu điểm và
nhược điểm của nó, khi mục tiêu đối với một ứng dụng là các đoạn dừng GC ngắn,
hai lựa chọn chính là bộ gom sản sinh (generational) và và bộ gom thời gian thực
(real-time).