Raymond Raymond wrote:

I ran a variant of the TPC-B benchmark with a large database (20 GB) and a large page cache (1 GB). I do not think you need TPC-B transactions to see this, but I think you need update-intensive transactions that frequently needs to load pages from disk. For example, single record updates where an index is used to locate the record. You will also need several connections in parallel (e.g., 20).

--
Øystein

Thanks for your answer. Did you use some tools to know something like
"single write operations that took almost 12 seconds" and "read requests
that took more than 20 seconds". I downloaded TPC-B benchmark program,
it didn't give me those kind of information. I want to know how did you
know the time for reads and writes.^_^.


No special tools. Our TPCB-client writes the number of committed transaction for each 10 second interval. That way, I observed regular drops in throughput. I/O response times was measured by instrumenting RAFContainer to measure the time it takes to do seek and read/write. This was written to derby.log and inspected manually. (See attached diff from RAFContainer.readPage for an example)



--
Øystein Grøvlen, Senior Staff Engineer
Sun Microsystems, Database Technology Group
Trondheim, Norway
+        long startTime = System.currentTimeMillis();
+        SanityManager.DEBUG_PRINT("RAFContainer", 
+                                  startTime + " " + Thread.currentThread()
+                                  + ": Read: " + getIdentity() 
+                                  + ", page=" + pageNumber);
        synchronized (this) {
+            long waitTime = System.currentTimeMillis();
+            SanityManager.DEBUG_PRINT("RAFContainer", 
+                                      waitTime + " " + Thread.currentThread()
+                                      + ": Wait finished: " + getIdentity() 
+                                      + ", waitTime=" + (waitTime-startTime));
+
            fileData.seek(pageOffset);

            fileData.readFully(pageData, 0, pageSize);
+
+            long stopTime = System.currentTimeMillis();
+            SanityManager.DEBUG_PRINT("RAFContainer", 
+                                      stopTime + " " + Thread.currentThread()
+                                      + ": Read completed:" + getIdentity() + 
": "
+                                      + (stopTime-waitTime) + " msec.");
        }

Reply via email to