加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 服务器 > 系统 > 正文

超高速多进程操作key为uint32 value为uint32的数据(用于监控系

发布时间:2021-01-09 05:17:44 所属栏目:系统 来源:网络整理
导读:? 超高速多进程操作key为uint32 value为uint32的数据(用于监控系统) ? https://www.cnblogs.com/dearplain/ ? 1.初始化,在共享内存上生成40个1000数组,数组每个项8个字节,4字节是key,4字节是value。40个数组有不同的少于1000的素数hash key。 ? 2.从40

?

超高速多进程操作key为uint32 value为uint32的数据(用于监控系统) ? https://www.cnblogs.com/dearplain/ ? 1.初始化,在共享内存上生成40个1000数组,数组每个项8个字节,4字节是key,4字节是value。40个数组有不同的少于1000的素数hash key。 ? 2.从40个数组找到节点,index为hkey=key%hash,如果存在,则更新,如果不存在,增加节点后更新。 ? 3.compare and swap 支持set操作。(如果失败就重新走流程) ? 4.atomic add支持原子增减。 ? 5.compare and swap 支持增加节点操作。(如果失败就重新走流程) ? 6.如果40个数组都找不到,也没有空闲节点,则失败。 ? 7.收集,agent会几秒内收集所有的数据,并全部置零。根据下面的计算,支持在同一机器几秒内同时使用37000个key,能满足大部分需求。

?

a = [0] * 40000
for i in range(1,1000000):
    done = 0
    j = 0
    for h in [998,997,991,983,982,977,976,974,971,967,964,958,956,953,947,944,941,937,934,932,929,926,922,919,916,914,911,908,907,904,898,892,887,886,883,881,878,877,872,866]:
        j = j+1
        if a[i%h+(j-1)*1000] == 0:
           a[i%h+(j-1)*1000] = 1
           done = 1
           break
    if done == 0:
        print(‘error in:‘,i)
        break

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读