<![CDATA[Latest posts for the topic "Tranh cãi về hiệu suất khi dùng cache"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Tranh cãi về hiệu suất khi dùng cache /hvaonline/posts/list/35878.html#220647 /hvaonline/posts/list/35878.html#220647 GMT Tranh cãi về hiệu suất khi dùng cache /hvaonline/posts/list/35878.html#220653 /hvaonline/posts/list/35878.html#220653 GMT Tranh cãi về hiệu suất khi dùng cache

nguago wrote:
Mình với ông bạn tranh cãi về Cache lưu ở file và cache lưu ở Ram Mình có suy nghĩ như sau: - Đầu tiên là cache là gì? 1 trang web đc hiển thị dưới dạng layout phải qua 5 giai đoạn (Chỉ là ví dụ) 1. Get từ database để có 1 mảng 2. Xử lý lần 1 với mảng này 3. Xử lý lần 2 với mảng này 4. Xử lý lần 3 với mảng này 5. Sau khi có kết quả cuối cùng ở bước 4 thì lưu kết quả đó vào Cache (Bước này Lưu vào Ram nhanh hơn lưu vào File nhưng chỉ thực hiện 1 lần đầu tiên) Từ lần truy cập thứ 2 thì 5 bước trên không còn nữa. Lúc này check xem đã tồn tại Cache đó chưa (theo key, nếu có rồi thì gọi ra và dùng mảng đó luôn. Giờ chỉ cần so sánh tốc độ gọi cache ra. Bọn mình thống nhất là Cache Ram nhanh hơn Cache file tầm 5 lần. Vậy là lấy từ Ram nhanh hơn lấy từ File 5 lần Cache file thì lấy bằng cách get string trong file đó và trả về 1 mảng, điều này dù chậm hơn Cache Ram là lấy luôn mảng trong Ram ra nhưng tốc độ quá nhanh, làm cho sự chênh lệch ko đáng kể Thống nhất tốc độ get string từ file để có mảng mất 0.0005 giây và từ Ram mất 0.0001 giây, Mình nghĩ là không có sự chênh lệch về tốc độ ở đây. Data của mình gồm khoảng 30k mảng cần phải lưu và tương đương tầm 1-2GB Cache Server có 12 GB RAM Mình nghĩ chênh lệch về tốc độ không đáng kể nhưng chả dại gì để Ram lúc nào cũng chứa 1-2GB dữ liệu mà ko phải dữ liệu nào cũng dùng đến nên mình chọn Cache File Các cao thủ am hiểu xin hãy góp ý giùm với, đã tranh luật hết mấy tiếng mà chưa ra vấn đề, ko ai chịu ai cả, vấn đề này không quan trọng (đối với bọn mình vì dù ai đúng ai sai cũng chả để làm gì!) nhưng mình nghĩ sẽ giúp nhiều người có cách nhìn đúng hơn về cache và cũng là để mình và bạn mình có 1 quan điểm chung ! 
RAM nhiều, không xài thì để làm gì?]]>
/hvaonline/posts/list/35878.html#220655 /hvaonline/posts/list/35878.html#220655 GMT
Tranh cãi về hiệu suất khi dùng cache

nguago wrote:
Mình với ông bạn tranh cãi về Cache lưu ở file và cache lưu ở Ram Mình có suy nghĩ như sau: - Đầu tiên là cache là gì? 1 trang web đc hiển thị dưới dạng layout phải qua 5 giai đoạn (Chỉ là ví dụ) 1. Get từ database để có 1 mảng 2. Xử lý lần 1 với mảng này 3. Xử lý lần 2 với mảng này 4. Xử lý lần 3 với mảng này 5. Sau khi có kết quả cuối cùng ở bước 4 thì lưu kết quả đó vào Cache (Bước này Lưu vào Ram nhanh hơn lưu vào File nhưng chỉ thực hiện 1 lần đầu tiên) Từ lần truy cập thứ 2 thì 5 bước trên không còn nữa. Lúc này check xem đã tồn tại Cache đó chưa (theo key, nếu có rồi thì gọi ra và dùng mảng đó luôn. Giờ chỉ cần so sánh tốc độ gọi cache ra. Bọn mình thống nhất là Cache Ram nhanh hơn Cache file tầm 5 lần. Vậy là lấy từ Ram nhanh hơn lấy từ File 5 lần Cache file thì lấy bằng cách get string trong file đó và trả về 1 mảng, điều này dù chậm hơn Cache Ram là lấy luôn mảng trong Ram ra nhưng tốc độ quá nhanh, làm cho sự chênh lệch ko đáng kể Thống nhất tốc độ get string từ file để có mảng mất 0.0005 giây và từ Ram mất 0.0001 giây, Mình nghĩ là không có sự chênh lệch về tốc độ ở đây. Data của mình gồm khoảng 30k mảng cần phải lưu và tương đương tầm 1-2GB Cache Server có 12 GB RAM Mình nghĩ chênh lệch về tốc độ không đáng kể nhưng chả dại gì để Ram lúc nào cũng chứa 1-2GB dữ liệu mà ko phải dữ liệu nào cũng dùng đến nên mình chọn Cache File Các cao thủ am hiểu xin hãy góp ý giùm với, đã tranh luật hết mấy tiếng mà chưa ra vấn đề, ko ai chịu ai cả, vấn đề này không quan trọng (đối với bọn mình vì dù ai đúng ai sai cũng chả để làm gì!) nhưng mình nghĩ sẽ giúp nhiều người có cách nhìn đúng hơn về cache và cũng là để mình và bạn mình có 1 quan điểm chung ! 
Tất nhiên đọc từ physical memory thì nhanh hơn là đọc từ đĩa rồi. Cái này không có gì phải bàn cãi. Tuy nhiên, phân đoạn đọc từ memory hay từ đĩa chỉ là một phần trong quy trình gởi nhận. Nếu xét đến giới hạn cache cho web thì cần xét đến I/O trên network và đây thường là "cổ chai" đáng chú ý nhất. Hơn nữa, một cache server đúng chức năng không chỉ thuần tuý lấy thông tin từ cache (trên memory hoặc trên đĩa) để cung cấp cho clients mà nó còn phải viếng nguồn thông tin (trang web nguyên thuỷ) xem có gì thay đổi không trước khi nó quyết định cung cấp bản trong cache. Chậm hơn nữa là quy trình so sánh giữa bản nguyên thuỷ từ trang web và bản đã được lưu. Quy trình này có thể có những thao tác tốn thời gian (ví dụ như đọc từ trang nguyên thuỷ, tìm bản trên cache, so sánh với bản trên cache, xoá bản trên cache, lấy bản mới từ nguồn, cập nhận vào cache.....). Tất nhiên, đọc và viết vô memory thì nhanh và đây là điểm lợi nhưng đây không phải là điều kiện tiên quyết và duy nhất trong suốt quá trình chuyển / nhận / lưu / cung cấp thông tin. Nên nhớ, dẫu có dùng memory thuần tuý đi chăng nữa, memory vẫn bị tình trạng "fragmented" và vẫn làm chậm. Hơn nữa, dữ liệu lưu trên mem sẽ bị huỷ hoàn toàn nếu khởi động lại máy và nếu không có cơ chế "push" thông tin từ mem để lưu tạm thời trên đĩa.]]>
/hvaonline/posts/list/35878.html#220666 /hvaonline/posts/list/35878.html#220666 GMT
Tranh cãi về hiệu suất khi dùng cache /hvaonline/posts/list/35878.html#220673 /hvaonline/posts/list/35878.html#220673 GMT Tranh cãi về hiệu suất khi dùng cache /hvaonline/posts/list/35878.html#220676 /hvaonline/posts/list/35878.html#220676 GMT Tranh cãi về hiệu suất khi dùng cache

zeno wrote:
Cá nhân mình nghĩ việc dùng Cache hiệu quả hay không còn tuỳ thuộc vào nhu cầu và cách thức triển khai. Khi dùng Cache đúng sẽ cho hiệu quả vô cùng (không phải vô lý mà các hệ thống lớn có đến hàng ngàn máy chủ caching, memcache, hbase. Các hệ quản trị csdl đều có dùng / phải dùng Cache - Trong trường hợp nào dùng như thế nào và bao nhiêu lại la chuyện khác) Hẳn nhiên đọc dữ liều từ RAM (Random acess) nhanh hơn nhiều so với DISK (Sequense Access). Về mặt rủi ro dữ liều RAM cũng cao hơn DISK nhưng mình hoàn toàn có thể control mức độ rủi ro này. Lưu những dữ liều có tần xuất access cao và ít biến thiên rất hiệu quả. Tất nhiên là put mọi thứ lên RAM thì tệ quá. Cache is king!  
Cám ơn bác, rất đúng ý em, 1 câu tâm đắc: "Cache is king!" :D ]]>
/hvaonline/posts/list/35878.html#220678 /hvaonline/posts/list/35878.html#220678 GMT
Tranh cãi về hiệu suất khi dùng cache

nguago wrote:

zeno wrote:
Cá nhân mình nghĩ việc dùng Cache hiệu quả hay không còn tuỳ thuộc vào nhu cầu và cách thức triển khai. Khi dùng Cache đúng sẽ cho hiệu quả vô cùng (không phải vô lý mà các hệ thống lớn có đến hàng ngàn máy chủ caching, memcache, hbase. Các hệ quản trị csdl đều có dùng / phải dùng Cache - Trong trường hợp nào dùng như thế nào và bao nhiêu lại la chuyện khác) Hẳn nhiên đọc dữ liều từ RAM (Random acess) nhanh hơn nhiều so với DISK (Sequense Access). Về mặt rủi ro dữ liều RAM cũng cao hơn DISK nhưng mình hoàn toàn có thể control mức độ rủi ro này. Lưu những dữ liều có tần xuất access cao và ít biến thiên rất hiệu quả. Tất nhiên là put mọi thứ lên RAM thì tệ quá. Cache is king!  
Cám ơn bác, rất đúng ý em, 1 câu tâm đắc: "Cache is king!" :D  
Cache is king (khi dùng đúng nó) và cache is a slug (khi dùng sai) ;).]]>
/hvaonline/posts/list/35878.html#220679 /hvaonline/posts/list/35878.html#220679 GMT
Tranh cãi về hiệu suất khi dùng cache /hvaonline/posts/list/35878.html#220680 /hvaonline/posts/list/35878.html#220680 GMT Tranh cãi về hiệu suất khi dùng cache

nguago wrote:
@conmale: Vậy mới cần xác định đúng mục đích và tính chất để lựa chọn Cache nào dùng vào cái gì. Dùng sai thì đôi khi mang lại hậu quả rất tệ ! :D 
Đã dùng cache thì mục đích bao giờ cũng là performance cho nên cái quan trọng đó là chứa dữ liệu có tính chất gì và bạn muốn truy cập nó như thế nào? Dù câu trả lời có là gì đi nữa mà nếu có RAM dư dả để đó kô ai xài thì ko ai chọn giải pháp chỉ dùng external memory để cache cả. Tiếp theo là ko thể tin vào kết quả benchmark của bạn được vì đơn giản, nếu RAM chỉ nhanh hơn disk 5 lần thì người ta chẳng bỏ tiền ra mua thêm RAM hoặc SSD thay cho ổ HDD thường đâu! Nếu bạn benchmark trên Linux server thì bạn vô tình so sánh RAM và RAM + API overhead rồi đó, vì Linux cache những dữ liệu được access thường xuyên của HDD lên RAM :) Trong trường hợp của bạn, bạn nên tranh cãi những lý do tại sao phải dùng 1 persistent storage từ đó kiếm 1 cache manager (library) mà hỗ trợ cache trong RAM và persist lên đĩa là xong. Ví dụ bạn có thể tham khảo Redis một dạng no-sql key-value store, coi như là database trong RAM nhưng data synced với HDD...]]>
/hvaonline/posts/list/35878.html#221235 /hvaonline/posts/list/35878.html#221235 GMT
Tranh cãi về hiệu suất khi dùng cache /hvaonline/posts/list/35878.html#221491 /hvaonline/posts/list/35878.html#221491 GMT