Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
bigpigeon
V2EX  ›  Linux

go-cpeh 的中 LockShared 性能好差啊

  •  
  •   bigpigeon · Sep 23, 2019 · 3335 views
    This topic created in 2422 days ago, the information mentioned may be changed or developed.

    我想用 rados 的 object 存储文件,用 LockShared 和 LockExclusive 实现了一个读写锁 但当我测速时发现 LockShared 性能好低啊,每秒 20 个,我以为只是延迟高,但发现并发也没用

    
    func newConn() *rados.Conn {
    	conn, err := rados.NewConn()
    	if err != nil {
    		panic(err)
    	}
    	cephInitByFile(conn, "k8s_conf")
    	err = conn.Connect()
    	if err != nil {
    		panic(err)
    	}
    	return conn
    }
    
    func init() {
    	conn = newConn()
    }
    func TestConcurrencyLockShared(t *testing.T) {
    	// open a pool handle
    	oid := "concurrency_lock_shared"
    	oidLock := "lock"
    	maxExpired := time.Minute
    	times := 100
    	wg := sync.WaitGroup{}
    	wg.Add(times)
    	for i := 0; i < times; i++ {
    		go func(i int) {
    			defer wg.Done()
    			ioctx, err := conn.OpenIOContext(poolName)
    			require.NoError(t, err)
    			res, err := ioctx.LockShared(oid, oidLock, "cookie"+fmt.Sprint(i), "", "lock test", maxExpired, nil)
    			assert.NoError(t, err)
    			assert.Equal(t, 0, res)
    		}(i)
    	}
    	wg.Wait()
    	wg.Add(times)
    	for i := 0; i < times; i++ {
    		go func(i int) {
    			defer wg.Done()
    			ioctx, err := conn.OpenIOContext(poolName)
    			require.NoError(t, err)
    			res, err := ioctx.Unlock(oid, oidLock, "cookie"+fmt.Sprint(i))
    			assert.NoError(t, err)
    			assert.Equal(t, 0, res)
    		}(i)
    	}
    	wg.Wait()
    }
    
    1 replies    2019-09-24 10:39:04 +08:00
    bigpigeon
        1
    bigpigeon  
    OP
       Sep 24, 2019
    捞一下,有大佬知道原因吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1284 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:43 · PVG 07:43 · LAX 16:43 · JFK 19:43
    ♥ Do have faith in what you're doing.