<pid>
veritabanı sunucusunun PID'si olan SQL sorgularının IO etkinliğini ölçmek için proc/<pid>/io
okunuyorum. Farkı hesaplamak için her sorgudan önceki ve sonraki değerleri okurum ve okunan ve/veya yazılan sebeplerden dolayı bayt sayısını alırım. Bu linux sayfa cache suretiyle yerine getirilebileceğini okur gibi RCHAR
, daha fazlasını içerir ikenRCHAR READ_BYTES (proc/<pid>/io) içerir mi?
Ben sahadan READ_BYTES
sayımları gerçek disk IO bildiği gibi kadarıyla, (açıklama için Understanding the counters in /proc/[pid]/io bakınız). Bu, RCHAR
'un READ_BYTES
değerine eşit veya daha büyük bir değerle gelmesi gerektiği varsayımına yol açar, ancak sonuçlarım bu varsayımla çelişir.
:
Query RCHAR READ_BYTES
tpch_q01.sql| 34.44180| 34.89453|
tpch_q02.sql| 2.89191| 3.64453|
tpch_q03.sql| 32.58994| 33.19531|
tpch_q04.sql| 17.78325| 18.27344|
Ama ben tamamen (değerler MB vardır) MonetDB için IO-sayaçlarını anlamak için başarısız :
Query RCHAR READ_BYTES
tpch_q01.sql| 0.07501| 220.58203|
tpch_q02.sql| 1.37840| 18.16016|
tpch_q03.sql| 0.08272| 162.38281|
tpch_q04.sql| 0.06604| 83.25391|
Am RCHAR
READ_BYTES
içerir varsayımıyla yanlış? MonetDB'nin kullanabileceği çekirdek sayaçlarını kandırmanın bir yolu var mı? Burada neler oluyor?
Sayfa önbelleğini temizlediğimi ve her sorgudan önce veritabanı sunucusunu yeniden başlattığımı ekleyebilirim. Ubuntu 11.10'dayım, kernel 3.0.0-15-jenerik çalıştırıyorum.
teşekkür ederiz. Gerçekten de, [MonetDB Architecture Docs] (http://www.monetdb.org/Documentation/Manuals/MonetDB/Mimari), bellek eşlemeli dosyaları kullandıklarını söylüyor. – lupz