Khám phá triết lý "vừa đủ" của Firefox trong kiến trúc trình duyệt mới để biết tại sao đó là sự lựa chọn phù hợp với bạn hơn Chrome

    Nguyễn Hải,  

    Cùng sử dụng kiến trúc đa tiến trình, nhưng những khác biệt về triết lý thiết kế đã làm nên những ưu điểm của Firefox trước Chrome.

    Mozilla vừa cho ra mắt phiên bản Firefox mới, đánh dấu mốc lần đầu tiên họ sử dụng kiến trúc đa tiến trình, với các quy trình xử lý riêng biệt cho nội dung trang web mà bạn tải xuống. Nhưng kiến trúc xử lý đa tiến trình này có ý nghĩa như thế nào với Firefox và các trình duyệt đối thủ khác, cũng như nó sẽ mang lại thay đổi gì cho trải nghiệm lướt web của người dùng, hãy cùng tìm hiểu xem.

    Không đơn thuần chỉ là một sự nỗ lực để vượt qua các thách thức về mặt kỹ thuật, những thay đổi về mặt kiến trúc với Firefox còn thể hiện quan niệm nổi bật của họ về trình duyệt: quan niệm vừa đủ.

    Nguyên tắc Goldilocks thể hiện trong các trình duyệt như thế nào

    Quan niệm vừa đủ cũng giống như những bát cháo của ba chú gấu trong câu chuyện Goldilocks. Cô bé Goldilocks nhận ra bát cháo của Gấu Bố quá nóng, còn của Gấu Mẹ lại quá lạnh, chỉ có của Gấu Con là vừa đủ ấm để ăn. Câu chuyện này cũng là nguồn gốc cho cái tên Nguyên tắc Goldilocks, thường để chỉ một quan niệm cho rằng những thứ tốt nhất khi ở trạng thái điều hòa, trung tính, không phải nghiêng về một thái cực nào.

     Mức độ cân bằng giữa tốc độ trình duyệt và mức tiêu thụ bộ nhớ máy tính.

    Mức độ cân bằng giữa tốc độ trình duyệt và mức tiêu thụ bộ nhớ máy tính.

    Việc sử dụng bộ nhớ của trình duyệt có tác động đến cả trải nghiệm của bạn, trình duyệt và cả những ứng dụng khác mà bạn đang chạy trên máy tính của mình. Nếu một trình duyệt sử dụng quá nhiều bộ nhớ, có thể sẽ làm máy tính của bạn không chạy nổi các ứng dụng khác mà bạn muốn sử dụng. Trên thực tế, máy tính của bạn sẽ chậm thu thập thông tin nếu bạn cố làm quá nhiều thứ cùng một lúc.

    Ngược lại, nếu trình duyệt không sử dụng quá nhiều bộ nhớ, nó khó có thể mang lại cho bạn một trải nghiệm nhanh chóng và mượt mà khi lướt web. Nguyên tắc Goldilocks cho rằng, một trình duyệt vừa đủ là khi nó sử dụng vừa phải lượng bộ nhớ của bạn – đủ để chạy nhanh nhưng không quá nhiều để làm cạn kiệt tài nguyên máy tính.

    Các thành phần của một ứng dụng

    Cũng như một món ăn được tạo nên từ nhiều thành phần khác nhau, các ứng dụng cũng có hai thành phần như vậy: các tiến trình (process) và các luồng (thread).

    Khi bạn khởi động một ứng dụng, nó sẽ bắt đầu một tiến trình. Tiến trình này có thể khởi động nhiều luồng thực thi khác nhau, mỗi luồng sẽ chia sẻ cùng một bộ nhớ làm việc. Các tiến trình thông thường sử dụng nhiều luồng để xử lý các loại công việc cần chạy ở các mức độ ưu tiên khác nhau.

     Các ứng dụng thường chỉ cần một tiến trình với nhiều luồng xử lý, nhưng trình duyệt hiện đại phù hợp với kiến trúc đa tiến trình và đa luồng cho mỗi tiến trình.

    Các ứng dụng thường chỉ cần một tiến trình với nhiều luồng xử lý, nhưng trình duyệt hiện đại phù hợp với kiến trúc đa tiến trình và đa luồng cho mỗi tiến trình.

    Ví dụ, một luồng ưu tiên cao có thể được dùng để vẽ nên giao diện người dùng của chương trình. Vì vậy, một trình duyệt có thể nhận biết và phản hồi ngay lập tức với mỗi cú click chuột hay mỗi lần gõ phím của người dùng. Một luồng khác để lấy dữ liệu ngầm sẽ có độ ưu tiên thấp hơn. Để xem được các tiến trình đang chạy trên máy tính, bạn có thể mở trình Task Manager (Windows) hay Activity Monitor (MacOS).

    Thỉnh thoảng, thay vì bắt đầu một luồng mới để hoàn thành tác vụ, tiến trình của ứng dụng sẽ khởi động một tiến trình khác cho công việc đó. Điều này có nghĩa là tác vụ đó cần nhiều bộ nhớ và sức mạnh điện toán hơn, hoặc công việc đó cần xử lý cách ly vì các lý do bảo mật hay để đảm bảo tính ổn định của hệ thống.

    Phần lớn các ứng dụng chạy trên một tiến trình duy nhất, và sử dụng đa luồng khác nhau. Nhưng trình duyệt lại không như phần lớn các ứng dụng đó.

    Trình duyệt đa tiến trình cho web hiện đại

    Sau khi ra mắt vào năm 2004, Mozilla và cộng đồng của mình tiếp tục phát triển hơn các tính năng của web. Chậm chạp nhưng chắc chắn, web dần trở thành một nền tảng, chứ không chỉ còn là một loại văn bản tĩnh. Nó có các ứng dụng tương tác như email, xử lý văn bản word, và mạng xã hội.

    Chào mừng tới Web 2.0

    Trong khi kỷ nguyên mới này của web ngày càng trở nên tuyệt vời hơn, Firefox và các trình duyệt khác không thể đồng thời chạy nhiều ứng dụng web một cách suôn sẻ như hệ điều hành chạy các ứng dụng bình thường. Giải pháp ở đây là gì? Bản thân trình duyệt cần hoạt động giống một hệ điều hành hơn, sử dụng đa tiến trình để tương tác với hàng loạt ứng dụng web.

    Với kiến trúc đa tiến trình, bạn có thể sử dụng một cách trơn tru một trang trong một tab, trong khi trang ở những tab khác có thể vẫn hoạt động bình thường. Trong khi các kỹ sư của Mozilla biết rằng cách tiếp cận đa tiến trình mới này là hoàn toàn khả thi, việc chuyển Firefox sang chạy trên kiến trúc này sẽ phá vỡ các Firefox Addon vốn phụ thuộc vào kiến trúc cũ. Do vậy, Mozilla đã miễn cưỡng làm điều này bởi vì việc chỉnh sửa Firefox qua các Addon đã trở nên rất phổ biến.

    Electrolysis: dự án của Mozilla để phân chia Firefox thành kiến trúc đa tiến trình

    Đó là một chặng đường dài về việc làm thế nào Firefox có thể giúp các Addon sống hài hòa với kiến trúc đa tiến trình mới. Cuối cùng, Mozilla thực hiện hai dự án có liên quan đến nhau: một là Electrolysis, một nỗ lực để chia Firefox thành kiến trúc đa tiến trình, và dự án thứ hai là quá trình chuyển đổi từ các Addon truyền thống sang các WebExtension cho nhiều trình duyệt khác nhau. Cả hai sáng kiến này đều đòi hỏi các nỗ lực kỹ thuật khổng lồ.

    Vào tháng Tám 2016, Mozilla ra mắt giai đoạn đầu của Electrolysis khi phân chia Firefox thành hai tiến trình riêng biệt nhằm xử lý giao diện người dùng và nội dung trang web. Ngày nay, Firefox đang tiến hành ra mắt giai đoạn hai của dự án này, mở rộng đáng kể số lượng tiến trình mà Firefox sử dụng để xử lý và bảo mật nội dung trang web, cũng như tăng cường việc quản lý các tiến trình đó để cải thiện lượng bộ nhớ sử dụng, hiệu suất và sự ổn định.

    Các tiến trình bổ sung này có khả năng chạy trên nhiều lõi tính toán, vì vậy mỗi trang web sẽ ít tác động tiêu cực đến tổng thể trình duyệt web. Và nếu một tiến trình nội dung bị crash, nó sẽ không ảnh hưởng đến các tiến trình nội dung khác và các trang web đang hiển thị trong nó.

    Kết quả của những thay đổi này là Firefox giờ chạy nhanh hơn và ổn định hơn bao giờ hết.

    Tại sao Chrome lại ngốn quá nhiều bộ nhớ trong khi Firefox lại không như vậy

    Mặc dù cả Firefox và Chrome đều sử dụng kiến trúc đa tiến trình, Firefox vẫn có một số khác biệt để tránh tiêu tốn quá nhiều bộ nhớ máy tính của bạn.

     Khác biệt giữa Chrome và Firefox trong kiến trúc đa tiến trình.

    Khác biệt giữa Chrome và Firefox trong kiến trúc đa tiến trình.

    Mặc định, Chrome tạo ra các tiến trình nội dung riêng biệt cho riêng từng trang mà bạn truy cập. Mở 10 tab khác nhau với 10 trang trong Chrome, bạn sẽ có 10 tiến trình khác biệt. Mỗi tiến trình đó lại có bộ nhớ của riêng nó – với các instance riêng của chúng trong engine trình duyệt. Mở một tab trong Chrome thường tiêu tốn hàng trăm megabyte RAM. Cách tiếp cận tự do này của Chrome đang tạo ra các tiến trình có thể tiêu tốn rất nhiều bộ nhớ.

    Mặt khác, cách tiếp cận có phần bảo thủ hơn của Firefox trong việc sử dụng các tiến trình lại giúp trình duyệt này tiêu tốn ít bộ nhớ hơn Chrome. Mặc định, Firefox tạo ra đến 4 tiến trình riêng biệt cho nội dung trang web. Vì vậy, 4 tab đầu tiên của trình duyệt sẽ sử dụng cả 4 tiến trình đó, còn các tab bổ sung sẽ sử dụng các luồng bên trong những tiến trình này. Như vậy, hàng loạt tab bên trong một tiến trình sẽ cùng chia sẻ engine của trình duyệt, vốn đã có mặt trong bộ nhớ, thay vì tự tạo các tiến trình riêng cho mình.

    So sánh mức độ tiêu thụ bộ nhớ của Firefox so với các trình duyệt khác

    Firefox chỉ sử dụng 4 tiến trình nội dung bởi vì nó là con số “vừa đủ” với nhiều người dùng Firefox. Với chỉ 4 tiến trình nội dung, máy tính của bạn sẽ có nhiều bộ nhớ hơn để chạy các ứng dụng khác ngoài Firefox.

     So sánh mức độ tiêu tốn bộ nhớ giữa Firefox và các trình duyệt khác.

    So sánh mức độ tiêu tốn bộ nhớ giữa Firefox và các trình duyệt khác.

    Trong bài kiểm tra so sánh mức độ tiêu thụ bộ nhớ của Firefox so với các trình duyệt khác, Mozilla đã thu được kết quả sau:

    - Với Windows 10 64bit, Chrome sử dụng bộ nhớ gấp 1,77 lần so với Firefox. Với Windows 10 32bit, Chrome sử dụng bộ nhớ gấp 2,44 lần so với Firefox.

    - Với MacOS 64bit – Chrome sử dụng bộ nhớ gấp 1,36 lần Firefox.

    - Với Linux 64bit – Chrome sử dụng bộ nhớ gấp 1,42 lần Firefox.

    Đặc biệt nếu bạn đang sử dụng một chiếc laptop với 8GB bộ nhớ hoặc ít hơn, bạn sẽ cần suy nghĩ nghiêm túc về trình duyệt bạn sử dụng. Cách sử dụng thận trọng bộ nhớ máy tính của Firefox nghĩa là bạn vẫn có thể thoải mái lướt web, và vẫn có thể làm những việc khác bạn cần.

    Nếu bạn có nhiều hơn 8GB RAM, có thể bạn sẽ muốn tăng cường số tiến trình mà Firefox sử dụng. Điều đó sẽ giúp Firefox chạy nhanh hơn, cho dù sẽ tiêu tốn bộ nhớ hơn. Để thay đổi số lượng tiến trình nội dung của firefox, nhập dòng about:config vào thanh địa chỉ, và điều chỉnh con số trên dòng dom.ipc.processCount.

    Có thể nói, kiến trúc đa tiến trình mới của Firefox là một bước tiến mạnh mẽ và với nhiều người, nó đã đạt được sự cân bằng tuyệt vời giữa tốc độ và mức độ tiêu tốn bộ nhớ.

    Tham khảo Medium

    Tin cùng chuyên mục
    Xem theo ngày