Computer >> Máy Tính >  >> Kết nối mạng >> Internet

Sử dụng bộ nhớ trong Firefox 3.1 Beta 3

Vài ngày trước, tôi đã xem xét Firefox 3.1 Beta 3. Nó khá đáng yêu. Nó tự hào về hiệu suất Javascript được cải thiện, nó đi kèm với các tính năng riêng tư và khả năng sử dụng mới, nó hỗ trợ các phần tử đa phương tiện HTML trong tương lai... Nhưng tôi không đề cập đến việc sử dụng bộ nhớ ở đâu trong bài viết đó.

Vì một mục đích tốt.

Đo lường chính xác việc sử dụng bộ nhớ của một ứng dụng là một công việc rất khó khăn. Tốt nhất, bạn có thể phỏng đoán, ước tính, chỉ dẫn, nhưng thông thường chúng mang tính chủ quan và dựa trên phạm vi các yếu tố hạn chế đến mức chúng gần như vô dụng. Hầu hết mọi người lấy số liệu thô được báo cáo bởi các tiện ích hệ thống khác nhau (như Trình quản lý tác vụ, Trình khám phá quy trình, ps) làm trọng tài duy nhất cho nhu cầu sử dụng bộ nhớ.

Trong bài viết này, tôi sẽ làm hai việc:Thứ nhất, cố gắng cung cấp cho bạn câu trả lời đơn giản, thẳng thắn rằng liệu Firefox 3.1 Beta sẽ sử dụng nhiều/ít bộ nhớ hơn các bản phát hành Firefox hiện tại hay không. Thứ hai, tôi sẽ dạy bạn một số điều khá thú vị về quản lý bộ nhớ.

Bài viết này chủ yếu sẽ nói về việc sử dụng bộ nhớ trong Linux, bởi vì việc đi sâu vào cốt lõi của mọi thứ trên hệ điều hành này sẽ dễ dàng hơn nhiều, nhưng tôi cũng sẽ không để người dùng Windows gặp khó khăn! Chúng tôi cũng sẽ xem xét việc sử dụng bộ nhớ Windows Firefox.

Hãy để chúng tôi bắt đầu.

Tại sao khó có được câu trả lời đơn giản hơn

Điều này là do hệ điều hành là một sinh vật sống với hàng ngàn tham số thay đổi mọi lúc. Nó giống như hỏi một người hít thở bao nhiêu không khí? Nó phụ thuộc vào rất nhiều yếu tố, bao gồm loại bộ xử lý, đồng hồ và kiến ​​trúc, hệ điều hành, số lượng quy trình hiện đang chạy, mức độ ưu tiên của quy trình, sự hiện diện của phần mềm thăm dò hệ thống như màn hình toàn vẹn, trình kiểm tra tệp, chống các chương trình vi-rút, và các chương trình khác, và nhiều thứ khác. Mỗi người dùng máy tính sẽ báo cáo kết quả khác nhau.

Điều này có nghĩa là bài kiểm tra của tôi ở đây nên được thực hiện với một nhúm muối lớn. Quan trọng nhất, những con số tuyệt đối không có ý nghĩa gì. Thứ hai, bạn có thể trải nghiệm hoàn toàn ngược lại với những gì tôi báo cáo ở đây. Tốt nhất, bài đánh giá/hướng dẫn này là một dấu hiệu tốt về những gì có thể xảy ra, với một lỗi khá đẹp.

Một ví dụ thực tế

Tại một trong những nơi làm việc trước đây của mình, tôi buộc phải chạy chương trình diệt vi-rút McAfee trên máy của mình. Điều này dường như làm mọi thứ chậm đi một chút, bao gồm cả khả năng phản hồi của Firefox, cả khi khởi động và mở mọi tab. Khi tôi tắt phần mềm chống vi-rút gây phiền nhiễu, thời gian phản hồi rút ngắn ít nhất hai phần ba, trong khi mức sử dụng bộ nhớ giảm một nửa. Hóa ra phần mềm chống vi-rút cũng đang cố gắng trở thành một loại bộ lọc nội dung web, vì vậy nó đang kiểm tra từng trang mà tôi đang cố xem. Các chương trình chống vi-rút, tường lửa, trình kiểm tra nội dung, bộ lọc web, thanh công cụ, plugin, tất cả những thứ này sẽ khiến trình duyệt của bạn hoạt động khác đi.

Do đó, các bài kiểm tra của bạn (và của tôi) phải được kiểm soát chặt chẽ. Nếu bạn muốn kiểm tra hành vi của một ứng dụng, bạn sẽ phải kiểm tra việc sử dụng ngắn hạn và dài hạn của nó, với một tab và nhiều tab đang mở, khi hiển thị hình ảnh và chạy tập lệnh so với văn bản HTML tĩnh, khi không hoạt động trong 12 giờ so với lạnh bắt đầu, khi tải xuống, v.v. Và thực hiện việc này ít nhất hai lần cho mỗi phiên bản, để đảm bảo kết quả được báo cáo là chính xác và đánh giá sự thay đổi.

Tôi hy vọng bạn hiểu trọng lực của nhiệm vụ trong tầm tay. Bây giờ, vô nghĩa đủ rồi, hãy bắt tay vào công việc.

Sử dụng bộ nhớ trên Linux

Trường hợp thử nghiệm:Linux Mint 6 Felicia, chạy ảo hóa trên máy Intel Core Duo, với 512 MB RAM được phân bổ cho hệ điều hành khách, Firefox không có bất kỳ tiện ích bổ sung nào lưu chủ đề mặc định. Trước tiên chúng ta hãy bắt đầu bằng cách kiểm tra những gì hệ thống cho chúng ta biết bằng cách mở tiện ích System Monitor.

Firefox 3.0.3:

Firefox 3.1 Beta 3:

Chúng ta có thể thấy rằng bản Beta chiếm 29 MB so với 24,4 MB được sử dụng bởi phiên bản sản xuất hiện tại. Đây là khởi động nguội, với một tab duy nhất được mở. Nhìn chung, có vẻ như tăng 19%.

Những con số này cho chúng ta biết điều gì?

Câu trả lời là:không có gì. Nói chung, trên Linux, các ứng dụng có xu hướng chiếm dụng bộ nhớ ngay cả khi chúng không có ý định sử dụng chúng. Điều này đặc biệt đúng đối với các chương trình dựa trên Java, có xu hướng phân bổ trước bộ nhớ để sử dụng trong tương lai và sau đó giải phóng bộ nhớ theo thời gian nếu các quy trình khác yêu cầu. Vì vậy, con số tĩnh có nghĩa là ít. Lấy nhiều hơn mức mình có thể sử dụng rồi cho đi khi người khác yêu cầu hầu như không phải là tham lam.

Để xem một chương trình thực sự chiếm bao nhiêu, chúng ta cần loại bỏ tất cả những thứ dư thừa. Điều này có nghĩa là ăn cắp toàn bộ nhóm bộ nhớ mà chúng tôi có (512 MB trong trường hợp của chúng tôi). Nhưng điều này khó đạt được nếu chỉ chạy hàng tấn chương trình. Trong trường hợp xấu nhất, nếu hệ thống cảm thấy bị bỏ đói, quy trình tiêu diệt Hết bộ nhớ (OOM) của nó sẽ khởi động và tiêu diệt các quy trình vi phạm nhất. Do đó, chúng ta cần một bộ nhớ ngắn hạn có thể lấy mọi thứ và sau đó trả lại.

Bạn đoán đúng rồi, chúng ta cần một ... memhog.

Ghi nhớ

Đây là một tiện ích rất đơn giản thực hiện những gì chúng tôi vừa mô tả. Lấy bộ nhớ và sau đó cung cấp cho nó trở lại. Trong quá trình này, nó sẽ buộc tất cả các quy trình đang chạy phải loại bỏ các nguồn dự trữ chưa sử dụng của chúng, làm giảm chúng xuống mức tối thiểu cần thiết.

Linux Mint không có tiện ích như vậy trong kho lưu trữ của nó, nhưng bạn có thể tạo tiện ích của riêng mình. Tải xuống một đoạn mã C và biên dịch nó. Đây là cách bạn thực hiện:

gcc -Wall memhog.c -o memhog

Khi tiện ích nhỏ đã được biên dịch, bạn chạy nó như sau:

./memhog

Ví dụ:

Sử dụng bộ nhớ trong Firefox 3.1 Beta 3

Hãy để nó chạy. Sẽ mất vài giây, có thể là một phút. Hệ thống của bạn sẽ không phản ứng nhanh trong khoảng thời gian đó. Sau khi hoàn tất, bạn có thể bắt đầu đo mức sử dụng bộ nhớ của các ứng dụng thử nghiệm của mình.

Điều này có nghĩa là chạy chương trình thử nghiệm hai lần, một lần trước memhog và một lần sau. Chúng tôi cũng sẽ sử dụng một cách chính xác hơn để kiểm tra việc sử dụng hệ thống - tiện ích dòng lệnh ps.

Mức sử dụng bộ nhớ được ps báo cáo (với memhog)

tiện ích ps có nhiều tùy chọn và cờ, cho phép kiểm tra rất kỹ các tài nguyên hệ thống đã sử dụng. Chúng tôi sẽ chạy nó với các cờ phụ trợ và kiểm tra các giá trị VSZ và RSS. Trong ảnh chụp màn hình bên dưới, đây sẽ lần lượt là cột thứ năm và thứ sáu trong đầu ra.

Việc giải thích các chi tiết nhỏ về ý nghĩa của các giá trị VSZ (Kích thước ảo) và RSS (Kích thước cài đặt thực) nằm ngoài phạm vi của bài viết này, nhưng tôi sẽ cố gắng nói ngắn gọn:RSS là dấu chân thực tế trong bộ nhớ vật lý và được chứa trong VSZ . VSZ là kích thước ảo của quy trình, cụ thể là mã, dữ liệu và ngăn xếp. Mặc dù vậy, hai giá trị này không tính đến một số phần của việc sử dụng quy trình, bao gồm ngăn xếp hạt nhân, nhưng vì Firefox chỉ là chương trình dành cho người dùng, chúng ta không nên lo lắng quá nhiều về những điều đó.

Chúng tôi sẽ đề cập đến VSZ và RSS nhiều hơn một chút khi chúng tôi chạm vào bản đồ bộ nhớ. Để biết thêm về ps, vui lòng kiểm tra trang hướng dẫn. Vì vậy, bây giờ, hãy xem điều gì sẽ xảy ra khi chúng tôi chạy Firefox, kiểm tra cách sử dụng của nó, chạy memhog và sau đó kiểm tra lại cách sử dụng.

Firefox 3.0.3:


Hai đầu ra đề cập đến trước và sau khi chạy memhog. Dung lượng tổng thể là 165 MB, với bộ nhớ thực là 65 MB khi khởi động nguội. Sau khi chạy memhog, dung lượng tổng thể hầu như không thay đổi, nhưng bộ nhớ thực giảm xuống còn 16,5MB.

Firefox 3.1 Beta 3:

Giá trị VSZ là 189 MB, với thực là 53 MB trước và 39 MB sau khi memhog được chạy. Có vẻ như Firefox 3.1 Beta 3 phân bổ trước ít bộ nhớ hơn khi bắt đầu, điều đó có nghĩa là nó sẽ ít ngốn bộ nhớ hơn [sic], nhưng nó yêu cầu đường cơ sở cao hơn để chạy.

Điều này là hợp lý, bởi vì Firefox 3.1 có NHIỀU tính năng hơn Firefox 3. Và những tính năng này phải được tính đến và cung cấp ở đâu đó. Nhiều tính năng hơn, nhiều bộ nhớ hơn nhưng ít tham lam hơn.

Nếu bạn nhìn vào mức sử dụng CPU, Firefox 3.1 chiếm ít hơn Firefox 3. 4,7% so với 7,7% trước đó và 3,3% so với 4,2%, cải thiện 27-64%. Điều này cũng quan trọng, có nghĩa là Firefox 3.1 nhẹ hơn trên hệ thống và do đó sẽ phản hồi nhanh hơn, mặc dù nó chiếm nhiều dung lượng bộ nhớ thực hơn. Bây giờ, hãy xem bản đồ bộ nhớ và cố gắng tìm ra lý do tại sao Firefox 3.1 chiếm nhiều hơn.

Bản đồ bộ nhớ

Bản đồ bộ nhớ có thể được nhìn thấy trong hệ thống tệp giả /proc, cho từng quy trình riêng biệt. Trước tiên, bạn cần tìm ID tiến trình (chúng tôi đã làm điều này với ps), sau đó truy cập /proc//maps.

Firefox 3.0.3:

Tôi không thể giải thích chi tiết về những gì bản đồ báo cáo, nhưng những gì bạn nhận được, tóm lại là điều này:Một vài dòng đầu tiên của kết quả này là mã nhị phân (văn bản), dữ liệu và phân đoạn đống. Sau đó, chúng tôi có các thư viện được chia sẻ mà quy trình sử dụng. Khi xem qua đầu ra, chúng ta có thể nghiên cứu chi tiết việc sử dụng bộ nhớ của ứng dụng và cố gắng hiểu hành vi của nó.

Bây giờ, chúng ta sẽ làm một cái gì đó đơn giản hơn nhiều. Chúng ta sẽ xem xét tổng số lượng bản đồ mà quy trình thực hiện. Hãy xem tổng số, 455.

Firefox 3.1 Beta 3:

Ở đây, chúng tôi có 472. Có lý do để Firefox 3.1 cần nhiều hơn, phải không?

Sử dụng bộ nhớ khi bị căng thẳng

Nhưng thử nghiệm chương trình với một tab duy nhất đang mở, không làm gì cả, hầu như không phải là một thử nghiệm. Vì vậy, tôi đã cấp nguồn cho Youtube và kiểm tra xem ứng dụng này xử lý Flash tốt như thế nào. Xin lưu ý rằng Flash Player là plugin của bên thứ ba dành cho Firefox và nó đi kèm với Linux Mint. Do đó, tôi không thể chắc chắn 100% bài kiểm tra "căng thẳng" của mình có ý nghĩa gì, nhưng bạn vẫn có thể muốn biết. Xin lưu ý rằng Firefox 3.1 có hiệu suất Javascript được cải thiện nhiều, như chúng ta đã thấy trong bài viết trước.

Vì vậy, đây là những gì chúng tôi có khi Youtube phát Jan Hammer, với ps báo cáo mức sử dụng xấp xỉ. cứ sau 5 giây, trong cả hai trình duyệt, khi khởi động nguội, với memhog chạy ngay trước khi thử nghiệm.

Firefox 3.0.3:

Bộ nhớ ổn định ở mức 163 MB (40 MB thực) và CPU ở mức 5,5%.

Firefox 3.1:

Bộ nhớ ở mức 194 MB (thực 57 MB) và xấp xỉ. CPU 11%. Điều này có nghĩa là trí nhớ khôn ngoan, mọi thứ gần như giống như trước đây. Việc sử dụng CPU cao hơn khi chạy Youtube có thể cho thấy thực tế là bản Beta chưa được tối ưu hóa để tận dụng tốt nhất các thư viện Flash. Đó là lý do, với động cơ được tân trang lại đáng kể.

Một điều đáng chú ý nữa là cả mức sử dụng bộ nhớ và CPU đều khác nhau, tùy thuộc vào những gì được thực hiện trên hệ thống, khiến cho việc đưa ra phán quyết chính xác trở nên khó khăn, nhưng tôi sẽ cố gắng hợp lý hóa tất cả những thứ siêu lập dị này. Cuối cùng, chúng ta hãy xem Điểm hết bộ nhớ (OOM).

Điểm OOM

Điểm OOM là một số khác được báo cáo bởi kernel thông qua hệ thống tệp /proc. Nó cho hệ thống biết điểm số của từng quy trình - và nếu một lần đẩy đến và hệ thống hết bộ nhớ - quy trình nào sẽ bị hủy. Điểm càng thấp càng tốt.

Cơ chế chính xác về cách hoạt động của điểm số/tiêu diệt OOM không quan trọng. Những gì chúng tôi đang tìm kiếm là so sánh điểm số giữa Firefox cũ và mới. Số này có thể được trích xuất từ ​​/proc//oom_score. Tôi đã kiểm tra các số liệu trước và sau memhog.

Firefox 3.0.3:

Sự khác biệt là không đáng kể trước và sau khi memhog đang chạy, nghĩa là Firefox sử dụng bộ nhớ khá thông minh.

Firefox 3.1 Beta 3:

Ở đây chúng ta có thể thấy kết quả sau khi chạy memhog (kết quả đầu tiên cũng tương tự).

Sự khác biệt giữa hai phiên bản là tối thiểu. Xin lưu ý rằng điểm OOM chỉ có ý nghĩa theo thứ tự độ lớn hơn là con số chính xác. Do đó, hệ thống xử lý cả hai phiên bản khá giống nhau.

Một kết luận nhỏ cho đến nay:Firefox 3.1 cần nhiều bộ nhớ hơn, bởi vì nó là một ứng dụng lớn hơn, với nhiều tính năng hơn. Mặt khác, nó sử dụng ít CPU hơn khi hiển thị HTML và Javascript, nghĩa là rất có thể bạn sẽ cảm thấy nó nhanh hơn. Hiệu suất Flash mong muốn được cải thiện, nhưng đây là điều mà cả Adobe và nhóm Mozilla sẽ phải làm việc cùng nhau. Có vẻ hợp lý khi tôi nhận được những kết quả này, vì Flash Player không dành cho bản Beta này và đi kèm với bản phân phối (và trình duyệt).

Điều này gần như kết thúc phần Linux. Bây giờ, chúng ta sẽ kiểm tra phần Windows.

Sử dụng bộ nhớ trên Windows

Trường hợp thử nghiệm:Windows XP SP3, được ảo hóa trên AMD Athlon 3700+, với 768MB RAM dành riêng cho máy ảo, chạy chủ đề Embedded và Firefox 3.0.7 mà không cần bất kỳ tiện ích mở rộng nào.

Phần này sẽ ngắn hơn một chút vì kỹ năng hack trên Windows của tôi, mặc dù khá, nhưng có phần kém hơn trên Linux. Ngoài ra, người dùng Windows không muốn thấy quá nhiều hack dòng lệnh, vì vậy tôi sẽ hạn chế chúng.

Tôi sẽ sử dụng hai tiện ích để kiểm tra việc sử dụng bộ nhớ, Trình quản lý tác vụ tiêu chuẩn và tiện ích Process Explorer, một công cụ mạnh mẽ do Sysiternals tạo ra.

Trình quản lý tác vụ

Firefox 3.0.7:

Firefox 3.1 Beta 3:

Việc sử dụng bộ nhớ gần như giống hệt nhau, dẫn trước một chút cho phiên bản hiện tại là 3MB. Nhìn chung, Firefox dường như sử dụng 31-34 MB, với một tab duy nhất được mở. Nhưng chúng tôi biết đây không phải là toàn bộ câu chuyện.

Trình khám phá quy trình

Chúng ta cũng có thể xem xét các giá trị tương tự như VSZ và RSS mà chúng ta đã thấy trước đó cho Linux. Process Explorer sẽ sẵn lòng báo cáo những điều này cho bạn.

Firefox 3.0.7:

Các số liệu quan trọng là Bộ làm việc (54 MB), Kích thước ảo (114 MB) và Byte riêng (43 MB). Byte riêng tư là thứ mà hầu hết người dùng sẽ muốn tham khảo, cơ sở mà ứng dụng phải có để hoạt động bình thường. Working Set bao gồm các trang ảo bản đồ quy trình. Kích thước ảo là dấu chân tổng thể mà ứng dụng có tại thời điểm nhất định.

Hãy xem những gì Firefox Beta báo cáo.

Firefox 3.1 Beta 3:

Firefox 3.1 Beta 3 trên Windows sử dụng ít bộ nhớ hơn. Đường cơ sở thấp hơn ở mức 25 MB, Bộ làm việc ở mức 34 MB và kích thước ảo là 95 MB. Xấp xỉ, đây là tổng thể ít hơn 20 MB. Những kết quả này khác với những gì bạn nhận được trên Linux, điều này khiến mọi thứ trở nên thú vị hơn.

Kết luận

Trên Linux, Firefox 3.1 Beta chiếm nhiều bộ nhớ hơn một chút nhưng ít CPU hơn phiên bản hiện tại, điều đó có nghĩa là phản hồi sẽ nhanh hơn. Trên Windows, Firefox 3.1 Beta mất khoảng. Ít hơn 20 MB so với phiên bản hiện tại - một lần nữa, phiên bản này sẽ nhanh hơn.

Nhưng những con số này, một lần nữa, chẳng có ý nghĩa gì!

Windows và Linux có các cách xử lý bộ nhớ khác nhau, trong đó Linux thường phân bổ trước nhiều hơn mức cần thiết rồi giải phóng còn Windows bổ sung thêm bộ nhớ theo yêu cầu. Điều này phù hợp tốt với hành vi tổng thể của hai hệ điều hành, nơi Linux thường giành chiến thắng khi thực hiện các tác vụ sử dụng nhiều bộ nhớ.

Hơn nữa, về cơ bản, chúng ta đang nói về hai hệ điều hành khác nhau, hai ứng dụng khác nhau, vì vậy việc so sánh trực tiếp có nghĩa là rất ít. Trong cả hai trường hợp, Firefox 3.1 Beta dự kiến ​​sẽ hoạt động nhanh hơn Firefox 3 hiện tại, dựa trên mô hình hoạt động của hai hệ điều hành. Nhìn chung, dung lượng chỉ khác nhau một chút, vài chục MB, có thể sẽ không thay đổi nhiều trong quá trình sử dụng hàng ngày. Tuy nhiên, bạn sẽ cảm thấy hiệu suất Javascript tăng 30%. Kết hợp với việc sử dụng CPU ít hơn, bạn sắp được tận hưởng một trình duyệt nhanh hơn.

Tuy nhiên, trên Linux, việc sử dụng Flash hiện chưa được tối ưu hóa.

Vui lòng không coi những kết quả này là bất cứ điều gì khác ngoài ước tính sơ bộ về những gì có thể xảy ra. Bài kiểm tra còn thiếu sót và hạn chế do thiết kế, mặc dù tôi đã cố gắng kỹ càng nhất có thể. Nhưng tiếng ồn xung quanh và sự tinh vi của toàn bộ bài kiểm tra khiến kết quả không khác gì một phỏng đoán dễ chịu.

Tuy nhiên, bạn đã học cách chơi với những thứ lập dị, như memhog, tiện ích ps, bản đồ, v.v., vì vậy hướng dẫn không phải là không có giá trị gia tăng. Đó là nó cho bây giờ, có vui vẻ!

Chúc mừng.