PC=0x7f7a3c130b5c m=0 sigcode=1
- Dominant language
- C++
- Stars
- 32.1k
- Forks
- 6.9k
- Avg merge
- 32m
- Merged PRs (30d)
- 1
Description
func OpenDB(dbPath string) (*grocksdb.DB, *grocksdb.WriteOptions, *grocksdb.ReadOptions, error) {
options := grocksdb.NewDefaultOptions()
options.SetCreateIfMissing(true)
options.SetMaxFileOpeningThreads(-1)
options.SetLevelCompactionDynamicLevelBytes(true)
env := grocksdb.NewDefaultEnv()
options.SetEnv(env)
writeOptions := grocksdb.NewDefaultWriteOptions()
writeOptions.SetSync(true)
readOptions := grocksdb.NewDefaultReadOptions()
readOptions.SetFillCache(true)
options.SetCreateIfMissing(true)
options.EnableStatistics()
// memtable
options.SetWriteBufferSize(128 * 1024 * 1024) // 128M
env.SetBackgroundThreads(10)
env.SetHighPriorityBackgroundThreads(1)
options.SetMaxBackgroundFlushes(10)
options.SetMaxWriteBufferNumber(16) // total memtable 2G
// L0
options.SetLevel0FileNumCompactionTrigger(8) // L0 size: 8 * 128M = 1G
options.SetLevel0SlowdownWritesTrigger(40) // slow down when L0 reach 5G
options.SetLevel0StopWritesTrigger(72) // stop when L0 reach 9G
// L1
options.SetTargetFileSizeBase(128 * 1024 * 1024) // 128M, same to L0
options.SetMaxBytesForLevelBase(1024 * 1024 * 1024) // 8 sst in L1, same number and size as L0
// compaction
options.SetMaxBackgroundCompactions(40)
options.SetMaxSubcompactions(4)
// level num
options.SetNumLevels(4) // L0: 1G, L1: 1G, L2: 10G, L3: 100G
// read performance
options.SetAdviseRandomOnOpen(false) // 开启预读取
blockBasedTableOptions := grocksdb.NewDefaultBlockBasedTableOptions()
blockBasedTableOptions.SetBlockCache(grocksdb.NewLRUCache(1024 * 1024 * 1024)) // 1GB
blockBasedTableOptions.SetCacheIndexAndFilterBlocks(true)
blockBasedTableOptions.SetPinL0FilterAndIndexBlocksInCache(true)
options.SetBlockBasedTableFactory(blockBasedTableOptions)
db, err := grocksdb.OpenDb(options, dbPath)
if err != nil {
log.Fatalln("OPEN DB error", db, err)
db.Close()
return nil, writeOptions, readOptions, errors.New("fail to open db")
} else {
log.Println("OPEN DB success", db)
}
return db, writeOptions, readOptions, nil
}
code as above.
when I excute it,
SIGSEGV: segmentation violation
PC=0x7f7a3c130b5c m=0 sigcode=1
signal arrived during cgo execution
goroutine 1 [syscall]:
runtime.cgocall(0x4b0bb0, 0xc00004fdf0)
/usr/bin/go1.21.3/src/runtime/cgocall.go:157 +0x4b fp=0xc00004fdc8 sp=0xc00004fd90 pc=0x4248eb
github.com/linxGnu/grocksdb._Cfunc_rocksdb_env_set_background_threads(0x0, 0xa)
_cgo_gotypes.go:2649 +0x45 fp=0xc00004fdf0 sp=0xc00004fdc8 pc=0x4a6fc5
main.OpenDB.(*Env).SetBackgroundThreads.func9(0x1b8dd00?, 0xa)
/home/ubuntu/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.8.4/env.go:33 +0x4f fp=0xc00004fe28 sp=0xc00004fdf0 pc=0x4addcf
github.com/linxGnu/grocksdb.(*Env).SetBackgroundThreads(...)
/home/ubuntu/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.8.4/env.go:33
main.OpenDB({0x4d6e82, 0x6})
/home/ubuntu/go/src/main/main.go:46 +0x185 fp=0xc00004ff20 sp=0xc00004fe28 pc=0x4ad025
main.main()
/home/ubuntu/go/src/main/main.go:23 +0x1f fp=0xc00004ff40 sp=0xc00004ff20 pc=0x4ace7f
runtime.main()
/usr/bin/go1.21.3/src/runtime/proc.go:267 +0x2bb fp=0xc00004ffe0 sp=0xc00004ff40 pc=0x454efb
runtime.goexit()
/usr/bin/go1.21.3/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00004ffe8 sp=0xc00004ffe0 pc=0x47e9a1
Contributor guide
Assessment
This issue has not been assessed yet.