<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小明思考

    Just a software engineer
    posts - 124, comments - 36, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    leveldb性能分析 - 隨機寫

    Posted on 2012-03-22 17:32 小明 閱讀(4168) 評論(0)  編輯  收藏 所屬分類: 分布式計算
    準備工作:

    1. 下載Snappy庫
    Download source code from: http://code.google.com/p/snappy
    編譯并安裝
    ./configure & make & sudo make install

    2. 編譯leveldb自帶的db_bench
    make db_bench
    注意:在ubuntu 11.04上編譯會出錯,修改makefile:
    $(CXX) $(LDFLAGS) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@

    $(CXX) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LDFLAGS)

    為了獲取更多的信息,我寫了一個簡單的測試程序來測試寫性能。
    g++ src/ldbbench.cpp libleveldb.a -I../leveldb/include -o ldb_test -pthread -lsnappy

    我隔10w條記錄統計一下運行時間和各層level的個數。

    #include <iostream>
    #include 
    <cstdlib>
    #include 
    <sys/time.h>
    #include 
    "leveldb/db.h"
    #include 
    "leveldb/env.h"

    using namespace std;
    using namespace leveldb;

    static inline double micro_time(){
      
    struct timeval tim;
      
    double ret;
      gettimeofday(
    &tim, NULL);
      ret 
    = tim.tv_sec+(tim.tv_usec/1000000.0);
      
    return ret;
    }

    int main() {
        srand ( time(NULL) );
        DB 
    *db ;
        Options op;
        op.create_if_missing 
    = true;
        Status s 
    = DB::Open(op,"/tmp/testdb",&db);
        Env 
    * env = Env::Default();
        WritableFile 
    *file;
        env
    ->NewWritableFile("/tmp/bench.csv",&file);

        
    if(s.ok()){
            cout 
    << "create successfully" << endl;

            WriteOptions wop;
            
    for(int j=0;j<100;++j){
                
    double start = micro_time();
                
    double cost;
                
    for(int i=0;i<100000;++i){
                    
    char key[100];
                    
    char value[100];
                    sprintf(key,
    "%d_%d",i,rand());
                    sprintf(value,
    "%d",rand());
                    db
    ->Put(wop,key,value);
                }
                cost 
    = micro_time()-start;
                cout 
    << "write successfully:" << j << ",costs "<<cost<<endl;
                
    // report the status
                {
                        
    //output stats information
                        string value;
                        
    char buffer[40];
                        
    for(int i=0;i<7;++i){
                            sprintf(buffer,
    "leveldb.num-files-at-level%d",i);
                            db
    ->GetProperty(buffer,&value);
                            file
    ->Append(value+",");
                        }
                        sprintf(buffer,
    "%f",cost);
                        file
    ->Append(buffer);
                        file
    ->Append("\n");
                        file
    ->Sync();
                }
            }
            cout 
    << "write completed" << endl;
        }

        delete db;
        file
    ->Close();
        delete file;
        
    return 0;
    }

    得到結果如下:


    可以看出 插入時間不穩定,一旦level 0 的文件個數達到8(leveldb在level0 sst file到達8會做流量控制),就會嚴重的影響插入速度。

    數據如下: 前7欄為各level的文件個數,最后一欄為插入時間(單位second).
    0,0,0,0,0,0,0,0.312044
    0,0,1,0,0,0,0,0.339661
    0,1,1,0,0,0,0,0.336554
    1,1,1,0,0,0,0,0.338470
    2,1,1,0,0,0,0,0.319139
    4,1,1,0,0,0,0,0.322158
    5,1,1,0,0,0,0,0.411267
    6,1,1,0,0,0,0,0.452211
    7,1,1,0,0,0,0,0.392227
    4,6,1,0,0,0,0,0.599982
    5,6,1,0,0,0,0,0.392222
    6,6,1,0,0,0,0,0.426607
    7,6,1,0,0,0,0,0.450604
    0,9,7,0,0,0,0,1.884518
    1,9,7,0,0,0,0,0.420226
    2,8,8,0,0,0,0,0.395083
    3,8,8,0,0,0,0,0.418100
    4,7,9,0,0,0,0,0.421611
    6,7,9,0,0,0,0,0.415739
    7,7,9,0,0,0,0,0.407361
    1,14,10,0,0,0,0,2.226791
    2,14,10,0,0,0,0,0.401517
    3,14,10,0,0,0,0,0.373305
    4,13,11,0,0,0,0,0.419741
    5,13,11,0,0,0,0,0.409911
    6,12,12,0,0,0,0,0.410904
    7,12,12,0,0,0,0,0.429305
    0,19,15,0,0,0,0,3.586968
    2,19,15,0,0,0,0,0.443083
    3,18,16,0,0,0,0,0.403899
    4,18,16,0,0,0,0,0.427664
    5,17,17,0,0,0,0,0.398022
    6,16,19,0,0,0,0,0.373106
    7,16,19,0,0,0,0,0.381070
    0,16,27,0,0,0,0,3.997287
    1,16,27,0,0,0,0,0.415576
    2,15,29,0,0,0,0,0.395088
    3,15,29,0,0,0,0,0.421756
    4,15,29,0,0,0,0,0.423345
    5,14,30,0,0,0,0,0.443051
    6,13,32,0,0,0,0,0.409214
    0,21,35,0,0,0,0,3.724305
    1,21,35,0,0,0,0,0.394496
    2,20,36,0,0,0,0,0.400312
    3,20,36,0,0,0,0,0.440494
    4,19,36,0,0,0,0,0.401116
    5,19,36,0,0,0,0,0.368698
    6,19,36,0,0,0,0,0.392624
    7,18,37,0,0,0,0,0.421263
    0,20,45,0,0,0,0,5.280940
    1,20,45,0,0,0,0,0.445995
    2,19,46,0,0,0,0,0.427433
    3,19,46,0,0,0,0,0.396355
    4,19,46,0,0,0,0,0.412447
    6,18,47,0,0,0,0,0.425992
    7,18,47,0,0,0,0,0.409269
    0,22,54,0,0,0,0,4.659271
    1,22,54,0,0,0,0,0.353135
    2,22,54,0,0,0,0,0.412604
    3,22,54,0,0,0,0,0.387365
    4,21,55,0,0,0,0,0.447579
    5,20,56,0,0,0,0,0.423402
    6,20,56,0,0,0,0,0.392983
    7,19,58,0,0,0,0,0.372202
    0,22,66,0,0,0,0,5.072227
    1,22,66,0,0,0,0,0.389874
    2,22,66,0,0,0,0,0.375599
    4,22,66,0,0,0,0,0.405292
    5,22,66,0,0,0,0,0.404367
    6,22,66,0,0,0,0,0.394260
    7,22,66,0,0,0,0,0.401855
    0,24,77,0,0,0,0,5.980508
    1,24,77,0,0,0,0,0.388424
    2,24,77,0,0,0,0,0.429406
    3,23,78,0,0,0,0,0.412908
    4,23,78,0,0,0,0,0.428574
    5,23,78,0,0,0,0,0.403336
    6,22,79,0,0,0,0,0.394216
    8,13,89,0,0,0,0,5.377096
    1,23,89,0,0,0,0,0.816229
    2,23,89,0,0,0,0,0.437396
    3,23,89,0,0,0,0,0.399540
    4,22,90,0,0,0,0,0.437927
    5,22,90,0,0,0,0,0.424814
    6,22,90,0,0,0,0,0.411747
    7,21,92,0,0,0,0,0.384908
    0,25,100,0,0,0,0,6.236974
    1,25,100,0,0,0,0,0.403147
    3,25,100,0,0,0,0,0.412086
    4,25,100,0,0,0,0,0.403978
    5,24,102,0,0,0,0,0.398120
    6,24,102,0,0,0,0,0.374137
    7,24,102,0,0,0,0,0.370625
    0,22,102,10,0,0,0,6.692459
    1,22,102,10,0,0,0,0.389345
    2,22,102,10,0,0,0,0.411086
    3,22,102,10,0,0,0,0.404387
    4,21,103,10,0,0,0,0.443593
    5,21,103,10,0,0,0,0.400221
    6,21,103,10,0,0,0,0.414371



    主站蜘蛛池模板: 亚洲国产精品无码成人片久久 | 亚洲日本久久久午夜精品| 亚洲精品白色在线发布| 亚洲国产成人综合| 亚洲综合欧美色五月俺也去| 蜜芽亚洲av无码一区二区三区 | 亚洲资源最新版在线观看| 亚洲精华国产精华精华液好用 | 久久国产免费福利永久| 日本一区免费电影| 久久国产成人亚洲精品影院| 亚洲天堂中文字幕| 亚洲无人区码一二三码区别图片| 特级毛片免费观看视频| 一个人免费视频在线观看www| 91久久精品国产免费直播| 日韩在线免费看网站| 亚洲日韩国产精品第一页一区| 99久久亚洲综合精品成人网| 亚洲中文字幕久久无码| 日韩毛片在线免费观看| 免费国产黄网站在线观看可以下载| 成年女人毛片免费播放人| AV在线亚洲男人的天堂| 亚洲成人在线免费观看| 美女隐私免费视频看| 99久久免费观看| 四虎免费永久在线播放| 亚洲国产女人aaa毛片在线| 亚洲日韩久久综合中文字幕| 久久WWW免费人成—看片| 91九色精品国产免费| 亚洲国产综合无码一区二区二三区 | 亚洲男人的天堂在线播放| 亚洲一线产品二线产品| 中文字幕无线码免费人妻| 免费羞羞视频网站| 亚洲成a人片在线观看中文动漫| 亚洲精品乱码久久久久久V | 久久久久免费看成人影片| 又粗又硬免费毛片|