<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 小明 閱讀(4171) 評論(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



    主站蜘蛛池模板: 免费在线视频你懂的| 免费无码一区二区| 亚洲成a人不卡在线观看| 亚洲AV无一区二区三区久久| 久久精品国产精品亚洲人人| 亚洲中文字幕伊人久久无码| 亚洲免费在线观看| 中文字幕精品亚洲无线码二区| 亚洲综合区小说区激情区| 亚洲视频在线精品| 久久久久亚洲爆乳少妇无| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲日本va中文字幕久久| 亚洲精品高清无码视频| 亚洲av无码成h人动漫无遮挡| 亚洲视频小说图片| 亚洲mv国产精品mv日本mv| 中文字幕 亚洲 有码 在线| 亚洲欧美aⅴ在线资源| 看一级毛片免费观看视频| 污视频网站免费观看| 一级毛片免费全部播放| 黄网站色视频免费在线观看的a站最新 | 97青青草原国产免费观看| 91热成人精品国产免费| 毛片免费视频播放| 又粗又大又长又爽免费视频| 亚洲综合久久夜AV | 中文字幕亚洲第一在线| 国产精品亚洲精品青青青| 福利片免费一区二区三区| 中文字幕免费在线看电影大全| 成人精品一区二区三区不卡免费看| 免费人成在线观看网站品爱网| 日本高清在线免费| 色播在线永久免费视频| 国产亚洲精品a在线观看 | 亚洲黄片毛片在线观看| 国产亚洲人成网站观看| 亚洲成aⅴ人片在线观| 日韩色日韩视频亚洲网站|