Bộ đệm hạt nhân

Một phần của tài liệu khảo sát các thư viện bắt gói lớp 2 và lớp 3 (Trang 27 - 28)

BPFs trong UNIX và Windows khác đáng kể trong việc quản lý c a bộ đệm gói tin nhân và bộ đệm gói tin ng ời dùng. BPF trong Unix có bộ đệm hạt nhân đ ợc làm từ hai khối bộ nh , kích th c c a nó th ờng là 4KB. Những hạn chế chính c a kiến trúc này là:

o Kích th c chuẩn c a bộ đệm c a trình điều khiển là 8KB và kích th c l n nhất là 32 KB. Kích th c này hầu nh là nhỏ so v i kích th c có thể c a RAM trong máy tính hiện nay.

o Việc chọn để chia nhỏ bộ đệm c a nhân thành 2 khối cho phép quá trình sao ch p nhanh, nh ng lại không tốt cho việc sử dụng bộ nh ( chằng hạn nh khả năng để có phần bộ nh trống mà không đ ợc sử dụng bởi BPF) Để v ợt qua những hạn chế này, kiến trúc đ ợc tạo ra sử dụng một bộ đệm vòng động đơn (mặc định là 1 Mbytes). Việc tăng kích th c có thể yêu cầu tính sẳn sàng bộ nh ngày nay l n hơn và quản lý động c a bộ đệm này, cái mà đ ợc cấp phát tại lúc bắt đầu c a quá trình bắt gói và giải phóng khi quá trình bắt gói kết thúc. Việc lựa chọn này có thể tạo ra hiệu suất sao chép thấp trong vài tr ờng hợp từ không gian nhân đến không gian ng ời dùng bởi vì điều không thể để sao chép bộ đệm v i kích th c đ ợc xác định tr c, nh ng nó lại tốt để sử dung bộ đệm.

Có một bộ đệm nhỏ đ ợc lấy từ kiến trúc BPF gốc đặc biệt trong tr ờng hợp ứng dụng không thể đọc nhanh hơn trình điều khiển bắt gói v i một thời gian hạn chế cho tr c. Tình thế này th ờng gặp khi dữ liệu có đ ợc truyền đến disk ( hoặc thậm chí đến màn hình) hoặc khi mạng có bùng nỗ l u l ợng.

Một điểm khác giữa Unix và Windows là cơ chế di chuyển gói tin từ không gian nhân đến không gian ng ời dùng. Trong UNIX, gói tin đ ợc bắt bởi BPF đ ợc sao chép t i ứng dụng hoặc khi bộ đệm hold đầy hoặc khi hết thời gian timeout, công nghệ này có thể đ ợc xem là delay write. Bằng cách này, ứng dụng đ ợc đánh thức hoặc khi số l ợng gói tin hiện tại đã đến hoặc khi hết thời gian lấy m u. Điều này đảm bảo tần số thấp c a lời gọi hệ thống và do đó, giảm sử dụng bộ xử lý, nh ng nó lại làm giảm tính đáp ứng c a ch ơng trình bắt gói. Hơn nữa, lựa chọn này làm tăng r i ro c a gói tin bị mất vì có thể ít không gian trống trong bộ đệm nhân ( mà không thể giải phóng khi cần) khi sự bùng nổ diễn ra.

Một ứng dụng bắt gói trong Windows đ ợc khóa chỉ nếu bộ đệm trong nhân rỗng; do đó nó nhận dữ liệu ngay khi bộ đệm nhân chứa bất cứ vật gì. Nếu ứng dụng nhanh hoặc nếu tần số gói tin đến không cao, l ợng dữ liệu đ ợc biểu diễn trong bộ đệm nhân ( và ngay lập tức chuyển t i ứng dụng) có thể rất thấp. Trong tình huống này, số lời gọi hệ thống đ ợc sử dụng bởi quá trình đọc trong Windows có thể l n hơn Unix. Điều này đảm bảo rằng tốt hơn cho việc sử dụng bộ đệm trong nhân và hành vi đáp ứng tốt hơn c a ứng dụng bắt gói, nh ng sinh ra tải xử lý cao hơn.

Một phần của tài liệu khảo sát các thư viện bắt gói lớp 2 và lớp 3 (Trang 27 - 28)