n*****t 发帖数: 22014 | 1 我如果没记错的话,一个锁的开销大概 50 CPU cycles,nonblock 的话不会太浪费。
你们概念里是多少? |
b*******s 发帖数: 5216 | 2 估计他们也不知道有时block比nonblock更快,基本都是用别人的东西的糊涂蛋
知其然不知所以然,比如赵策
【在 n*****t 的大作中提到】 : 我如果没记错的话,一个锁的开销大概 50 CPU cycles,nonblock 的话不会太浪费。 : 你们概念里是多少?
|
n**x 发帖数: 606 | 3 怕不怕到没啥, 关键是一个锁会导致无数请求的排队等待,导致的性能下降是主要问
题。
【在 n*****t 的大作中提到】 : 我如果没记错的话,一个锁的开销大概 50 CPU cycles,nonblock 的话不会太浪费。 : 你们概念里是多少?
|
b*******s 发帖数: 5216 | 4 要看情况的
【在 n**x 的大作中提到】 : 怕不怕到没啥, 关键是一个锁会导致无数请求的排队等待,导致的性能下降是主要问 : 题。
|
d***a 发帖数: 13752 | 5 是这样。所以很多高性能设计要避免用锁,或用小粒度(fine-grained)的锁。
【在 n**x 的大作中提到】 : 怕不怕到没啥, 关键是一个锁会导致无数请求的排队等待,导致的性能下降是主要问 : 题。
|
b*******s 发帖数: 5216 | 6 不是绝对的,不过锁多了难维护是个问题
难维护不是像赵策认为的死锁难维护
多白痴才会被死锁困扰,四条件随便破坏一个不就得了
他就是个入门水平
【在 d***a 的大作中提到】 : 是这样。所以很多高性能设计要避免用锁,或用小粒度(fine-grained)的锁。
|
b*******s 发帖数: 5216 | 7 不过赵老师还有饭吃,说明java是个好语言
【在 b*******s 的大作中提到】 : 不是绝对的,不过锁多了难维护是个问题 : 难维护不是像赵策认为的死锁难维护 : 多白痴才会被死锁困扰,四条件随便破坏一个不就得了 : 他就是个入门水平
|
n*****t 发帖数: 22014 | 8 这个可以优化,我设想每个车次每类座席用一个锁,同时请求同一个锁的几率并不高,
即使发生了,这个车次也是几个 ms 就全灭了。热门车次一开始可能拖后腿,可以看看
怎么调度。
【在 n**x 的大作中提到】 : 怕不怕到没啥, 关键是一个锁会导致无数请求的排队等待,导致的性能下降是主要问 : 题。
|
n**x 发帖数: 606 | 9 在这个500万的需求里,上锁一定是巨大的瓶颈。。。
【在 b*******s 的大作中提到】 : 要看情况的
|
n*****t 发帖数: 22014 | 10 绝大部分锁是立即拿到的,所以 。。。
【在 n**x 的大作中提到】 : 在这个500万的需求里,上锁一定是巨大的瓶颈。。。
|
|
|
b*******s 发帖数: 5216 | 11 嗯,这个适合nonblocking的
就线程捆在core上,用spin lock方法
【在 n**x 的大作中提到】 : 在这个500万的需求里,上锁一定是巨大的瓶颈。。。
|
n**x 发帖数: 606 | 12 100线程上锁更新一个公共变量,跟一百个线程concurrent更新一个private变量。性能
差距是数量级的.
【在 n*****t 的大作中提到】 : 绝大部分锁是立即拿到的,所以 。。。
|
a***n 发帖数: 538 | 13 这个要看这个变量是一节车厢,还是一个座位吧。
我觉得买票的事情是可以用多个变量来减低contention的。就是最后省下几张票的时候
会比较慢一点。
【在 n**x 的大作中提到】 : 100线程上锁更新一个公共变量,跟一百个线程concurrent更新一个private变量。性能 : 差距是数量级的.
|
n*****t 发帖数: 22014 | 14 纳尼?
1000 个车次 5 类座席 5000 个锁,16 core 起 16 个 threads 多了用处不大。同时
抢同一个锁的几率很小吧?
【在 n**x 的大作中提到】 : 100线程上锁更新一个公共变量,跟一百个线程concurrent更新一个private变量。性能 : 差距是数量级的.
|
b*******s 发帖数: 5216 | 15 你是说粒度还是运算复杂度?
【在 a***n 的大作中提到】 : 这个要看这个变量是一节车厢,还是一个座位吧。 : 我觉得买票的事情是可以用多个变量来减低contention的。就是最后省下几张票的时候 : 会比较慢一点。
|
b*******s 发帖数: 5216 | 16 可以再多一倍,hyper threading
【在 n*****t 的大作中提到】 : 纳尼? : 1000 个车次 5 类座席 5000 个锁,16 core 起 16 个 threads 多了用处不大。同时 : 抢同一个锁的几率很小吧?
|
a***n 发帖数: 538 | 17 减少单个变量更新的contention. 比如有100张票,那么分成3个变量33,33,34,就可以
3个进程
都同时更新,最后一张票的时候会比较慢,因为要3个变量都检查。但是大部分情况只
要锁住一个变量就可以保证有票了。
【在 b*******s 的大作中提到】 : 你是说粒度还是运算复杂度?
|
n*****t 发帖数: 22014 | 18 我是打算留着做 network/disk io,不过一肩挑问题也不大
【在 b*******s 的大作中提到】 : 可以再多一倍,hyper threading
|
z****e 发帖数: 54598 | 19 我很有把握地认为
你去做,一定挂
哈哈,别说废话
做吧,又不敢说
唧唧歪歪跟个娘们一样
【在 b*******s 的大作中提到】 : 不是绝对的,不过锁多了难维护是个问题 : 难维护不是像赵策认为的死锁难维护 : 多白痴才会被死锁困扰,四条件随便破坏一个不就得了 : 他就是个入门水平
|
b*******s 发帖数: 5216 | 20 屁都不懂的少插嘴
【在 z****e 的大作中提到】 : 我很有把握地认为 : 你去做,一定挂 : 哈哈,别说废话 : 做吧,又不敢说 : 唧唧歪歪跟个娘们一样
|
z****e 发帖数: 54598 | 21 不敢做说那么多有啥用哦?
说这么多跟放屁有什么区别?
【在 b*******s 的大作中提到】 : 屁都不懂的少插嘴
|