Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improvements to lsmperf.tcl test. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
371c6c984d79aecb350bfb9a30bb3424 |
User & Date: | dan 2012-09-28 14:57:39.997 |
Context
2012-09-28
| ||
18:35 | Allow deserialized snapshots to persist between transactions. check-in: fc4601f91f user: dan tags: trunk | |
14:57 | Improvements to lsmperf.tcl test. check-in: 371c6c984d user: dan tags: trunk | |
2012-09-27
| ||
20:04 | Mark blocks as free more aggressively. check-in: eb4ae342c5 user: dan tags: trunk | |
Changes
Changes to lsm-test/lsmtest_datasource.c.
︙ | ︙ | |||
16 17 18 19 20 21 22 | void testDatasourceEntry( Datasource *p, int iData, void **ppKey, int *pnKey, void **ppVal, int *pnVal ){ | | | > > | | | | | | | | | | | > > | > | | < < | < | > | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | void testDatasourceEntry( Datasource *p, int iData, void **ppKey, int *pnKey, void **ppVal, int *pnVal ){ assert( (ppKey==0)==(pnKey==0) ); assert( (ppVal==0)==(pnVal==0) ); if( ppKey ){ int nKey; switch( p->eType ){ case TEST_DATASOURCE_RANDOM: { int nRange = (1 + p->nMaxKey - p->nMinKey); nKey = (int)( testPrngValue((u32)iData) % nRange ) + p->nMinKey; testPrngString((u32)iData, p->aKey, nKey); break; } case TEST_DATASOURCE_SEQUENCE: nKey = sprintf(p->aKey, "%012d", iData); break; } *ppKey = p->aKey; *pnKey = nKey; } if( ppVal ){ u32 nVal = testPrngValue((u32)iData)%(1+p->nMaxVal-p->nMinVal)+p->nMinVal; testPrngString((u32)~iData, p->aVal, (int)nVal); *ppVal = p->aVal; *pnVal = (int)nVal; } } void testDatasourceFree(Datasource *p){ testFree(p); } /* |
︙ | ︙ |
Changes to lsm-test/lsmtest_main.c.
︙ | ︙ | |||
522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 | { "-system", -1, 0}, { "help", -2, 0}, {0, 0, 0} }; int i; int aParam[8]; int rc = 0; TestDb *pDb; Datasource *pData; DatasourceDefn defn = { TEST_DATASOURCE_RANDOM, 0, 0, 0, 0 }; char *zSystem = ""; int bLsm = 1; /* Initialize aParam[] with default values. */ for(i=0; i<ArraySize(aOpt); i++){ if( aOpt[i].zOpt ) aParam[aOpt[i].eVal] = aOpt[i].iDefault; } /* Process the command line switches. */ | > > > > > > > > | 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 | { "-system", -1, 0}, { "help", -2, 0}, {0, 0, 0} }; int i; int aParam[8]; int rc = 0; int bReadonly = 0; int nContent = 0; TestDb *pDb; Datasource *pData; DatasourceDefn defn = { TEST_DATASOURCE_RANDOM, 0, 0, 0, 0 }; char *zSystem = ""; int bLsm = 1; #ifdef NDEBUG /* If NDEBUG is defined, disable the dynamic memory related checks in ** lsmtest_mem.c. They slow things down. */ testMallocUninstall(tdb_lsm_env()); #endif /* Initialize aParam[] with default values. */ for(i=0; i<ArraySize(aOpt); i++){ if( aOpt[i].zOpt ) aParam[aOpt[i].eVal] = aOpt[i].iDefault; } /* Process the command line switches. */ |
︙ | ︙ | |||
576 577 578 579 580 581 582 583 584 | } } printf("\n"); defn.nMinKey = defn.nMaxKey = aParam[ST_KEYSIZE]; defn.nMinVal = defn.nMaxVal = aParam[ST_VALSIZE]; pData = testDatasourceNew(&defn); if( bLsm ){ | > > > > | | > > > > > > | | | > > | > > > > > > > > > > | 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 | } } printf("\n"); defn.nMinKey = defn.nMaxKey = aParam[ST_KEYSIZE]; defn.nMinVal = defn.nMaxVal = aParam[ST_VALSIZE]; pData = testDatasourceNew(&defn); if( aParam[ST_WRITE]==0 ){ bReadonly = 1; } if( bLsm ){ rc = tdb_lsm_open(zSystem, "testdb.lsm", !bReadonly, &pDb); }else{ pDb = testOpen(zSystem, !bReadonly, &rc); } if( rc!=0 ) return rc; if( bReadonly ){ nContent = testCountDatabase(pDb); } for(i=0; i<aParam[ST_REPEAT] && rc==0; i++){ int msWrite, msFetch, msScan; int iFetch; int nWrite = aParam[ST_WRITE]; if( bReadonly ){ msWrite = 0; }else{ testTimeInit(); testWriteDatasourceRange(pDb, pData, i*nWrite, nWrite, &rc); msWrite = testTimeGet(); nContent += nWrite; } if( aParam[ST_PAUSE] ){ if( aParam[ST_PAUSE]/1000 ) sleep(aParam[ST_PAUSE]/1000); if( aParam[ST_PAUSE]%1000 ) usleep(1000 * (aParam[ST_PAUSE]%1000)); } if( aParam[ST_FETCH] ){ testTimeInit(); for(iFetch=0; iFetch<aParam[ST_FETCH]; iFetch++){ int iKey = testPrngValue(i*nWrite+iFetch) % nContent; #ifndef NDEBUG testDatasourceFetch(pDb, pData, iKey, &rc); #else void *pKey; int nKey; /* Database key to query for */ void *pVal; int nVal; /* Result of query */ testDatasourceEntry(pData, iKey, &pKey, &nKey, 0, 0); rc = tdb_fetch(pDb, pKey, nKey, &pVal, &nVal); if( rc==0 && nVal<0 ) rc = 1; if( rc ) break; #endif } msFetch = testTimeGet(); }else{ msFetch = 0; } if( i==(aParam[ST_REPEAT]-1) ){ |
︙ | ︙ |
Changes to tool/lsmperf.tcl.
︙ | ︙ | |||
165 166 167 168 169 170 171 | append script $data3 append script "pause -1\n" exec_gnuplot_script $script $zPng } do_write_test x.png 120 50000 50000 30 { | | | | | 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | append script $data3 append script "pause -1\n" exec_gnuplot_script $script $zPng } do_write_test x.png 120 50000 50000 30 { lsm-mt "mmap=1 multi_proc=0 safety=1 threads=3 autowork=0" LevelDB leveldb } # lsm-mt "mmap=1 multi_proc=0 threads=2 autowork=0 autocheckpoint=8192000" # lsm-mt "mmap=1 multi_proc=0 safety=1 threads=3 autowork=0" # lsm-st "mmap=1 multi_proc=0 safety=1 threads=1 autowork=1" # lsm-mt "mmap=1 multi_proc=0 safety=1 threads=3 autowork=0" # lsm-mt "mmap=1 multi_proc=0 safety=1 threads=3 autowork=0" # LevelDB leveldb # lsm-st "mmap=1 multi_proc=0 safety=1 threads=1 autowork=1" # LevelDB leveldb |
︙ | ︙ |