{"expand":"renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations","id":"44497","self":"https://jira.geedge.net/rest/api/2/issue/44497","key":"OMPUB-1339","fields":{"issuetype":{"self":"https://jira.geedge.net/rest/api/2/issuetype/10004","id":"10004","description":"","iconUrl":"https://jira.geedge.net/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype","name":"故障","subtask":false,"avatarId":10303},"components":[],"timespent":null,"timeoriginalestimate":null,"description":"CPU ： Intel 6338\r\n\r\nMEM： 1TB\r\n\r\nWorker：47 cores\r\n\r\nTraffic：110~120Gbps\r\n\r\n[^traffic_sketch.perf.svg]\r\n\r\n单核火焰图如下所示，整体占用已经接近100%，排名靠前的接口与heavy keeper相关\r\n\r\n^!image-2024-06-24-18-18-50-191.png|width=610,height=379!^","project":{"self":"https://jira.geedge.net/rest/api/2/project/10206","id":"10206","key":"OMPUB","name":"Operation and Maintenance","projectTypeKey":"business","avatarUrls":{"48x48":"https://jira.geedge.net/secure/projectavatar?pid=10206&avatarId=10715","24x24":"https://jira.geedge.net/secure/projectavatar?size=small&pid=10206&avatarId=10715","16x16":"https://jira.geedge.net/secure/projectavatar?size=xsmall&pid=10206&avatarId=10715","32x32":"https://jira.geedge.net/secure/projectavatar?size=medium&pid=10206&avatarId=10715"},"projectCategory":{"self":"https://jira.geedge.net/rest/api/2/projectCategory/10002","id":"10002","description":"系统运维","name":"MaintenanceDev"}},"fixVersions":[],"aggregatetimespent":null,"resolution":null,"timetracking":{},"customfield_10401":null,"customfield_10104":null,"customfield_10402":null,"customfield_10105":"0|i05p4c:","customfield_10403":null,"customfield_10404":null,"attachment":[{"self":"https://jira.geedge.net/rest/api/2/attachment/63509","id":"63509","filename":"0.svg","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=chenzizhan","name":"chenzizhan","key":"JIRAUSER11613","emailAddress":"chenzizhan@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?avatarId=10349","24x24":"https://jira.geedge.net/secure/useravatar?size=small&avatarId=10349","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&avatarId=10349","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&avatarId=10349"},"displayName":"陈子瞻","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-10-14T16:45:37.744+0800","size":114810,"mimeType":"image/svg+xml","content":"https://jira.geedge.net/secure/attachment/63509/0.svg"},{"self":"https://jira.geedge.net/rest/api/2/attachment/59292","id":"59292","filename":"image-2024-06-24-18-18-50-191.png","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=yangwei","name":"yangwei","key":"JIRAUSER10103","emailAddress":"yangwei@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?ownerId=JIRAUSER10103&avatarId=10708","24x24":"https://jira.geedge.net/secure/useravatar?size=small&ownerId=JIRAUSER10103&avatarId=10708","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&ownerId=JIRAUSER10103&avatarId=10708","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&ownerId=JIRAUSER10103&avatarId=10708"},"displayName":"杨威","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-06-24T18:18:50.955+0800","size":1978882,"mimeType":"image/png","content":"https://jira.geedge.net/secure/attachment/59292/image-2024-06-24-18-18-50-191.png","thumbnail":"https://jira.geedge.net/secure/thumbnail/59292/_thumb_59292.png"},{"self":"https://jira.geedge.net/rest/api/2/attachment/59293","id":"59293","filename":"traffic_sketch.perf.svg","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=yangwei","name":"yangwei","key":"JIRAUSER10103","emailAddress":"yangwei@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?ownerId=JIRAUSER10103&avatarId=10708","24x24":"https://jira.geedge.net/secure/useravatar?size=small&ownerId=JIRAUSER10103&avatarId=10708","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&ownerId=JIRAUSER10103&avatarId=10708","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&ownerId=JIRAUSER10103&avatarId=10708"},"displayName":"杨威","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-06-24T18:17:36.892+0800","size":1018800,"mimeType":"image/svg+xml","content":"https://jira.geedge.net/secure/attachment/59293/traffic_sketch.perf.svg"},{"self":"https://jira.geedge.net/rest/api/2/attachment/63508","id":"63508","filename":"百分比.png","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=chenzizhan","name":"chenzizhan","key":"JIRAUSER11613","emailAddress":"chenzizhan@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?avatarId=10349","24x24":"https://jira.geedge.net/secure/useravatar?size=small&avatarId=10349","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&avatarId=10349","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&avatarId=10349"},"displayName":"陈子瞻","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-10-14T16:01:53.976+0800","size":24832,"mimeType":"image/png","content":"https://jira.geedge.net/secure/attachment/63508/%E7%99%BE%E5%88%86%E6%AF%94.png","thumbnail":"https://jira.geedge.net/secure/thumbnail/63508/_thumb_63508.png"}],"aggregatetimeestimate":null,"resolutiondate":null,"workratio":-1,"summary":"新疆实验局：功能端处理100Gbps+流量，traffic skech相关接口单核占用超过30%","lastViewed":null,"watches":{"self":"https://jira.geedge.net/rest/api/2/issue/OMPUB-1339/watchers","watchCount":3,"isWatching":false},"creator":{"self":"https://jira.geedge.net/rest/api/2/user?username=yangwei","name":"yangwei","key":"JIRAUSER10103","emailAddress":"yangwei@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?ownerId=JIRAUSER10103&avatarId=10708","24x24":"https://jira.geedge.net/secure/useravatar?size=small&ownerId=JIRAUSER10103&avatarId=10708","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&ownerId=JIRAUSER10103&avatarId=10708","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&ownerId=JIRAUSER10103&avatarId=10708"},"displayName":"杨威","active":true,"timeZone":"Asia/Shanghai"},"subtasks":[],"created":"2024-06-24T18:21:00.889+0800","reporter":{"self":"https://jira.geedge.net/rest/api/2/user?username=yangwei","name":"yangwei","key":"JIRAUSER10103","emailAddress":"yangwei@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?ownerId=JIRAUSER10103&avatarId=10708","24x24":"https://jira.geedge.net/secure/useravatar?size=small&ownerId=JIRAUSER10103&avatarId=10708","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&ownerId=JIRAUSER10103&avatarId=10708","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&ownerId=JIRAUSER10103&avatarId=10708"},"displayName":"杨威","active":true,"timeZone":"Asia/Shanghai"},"customfield_10000":"{summaryBean=com.atlassian.jira.plugin.devstatus.rest.SummaryBean@4aacaf21[summary={pullrequest=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@6473a2a5[overall=PullRequestOverallBean{stateCount=0, state='OPEN', details=PullRequestOverallDetails{openCount=0, mergedCount=0, declinedCount=0}},byInstanceType={}], build=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@1aff28e9[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BuildOverallBean@6360d799[failedBuildCount=0,successfulBuildCount=0,unknownBuildCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], review=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@3812987c[overall=com.atlassian.jira.plugin.devstatus.summary.beans.ReviewsOverallBean@276e5805[stateCount=0,state=<null>,dueDate=<null>,overDue=false,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], deployment-environment=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@44b58461[overall=com.atlassian.jira.plugin.devstatus.summary.beans.DeploymentOverallBean@210c4f71[topEnvironments=[],showProjects=false,successfulCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], repository=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@d71e254[overall=com.atlassian.jira.plugin.devstatus.summary.beans.CommitOverallBean@588a2d8f[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], branch=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@30f42c73[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BranchOverallBean@73c09adb[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}]},errors=[],configErrors=[]], devSummaryJson={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":\"OPEN\",\"details\":{\"openCount\":0,\"mergedCount\":0,\"declinedCount\":0,\"total\":0},\"open\":true},\"byInstanceType\":{}},\"build\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":{}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,\"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}},\"repository\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}},\"branch\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":false}}","aggregateprogress":{"progress":0,"total":0},"customfield_10100":null,"priority":{"self":"https://jira.geedge.net/rest/api/2/priority/3","iconUrl":"https://jira.geedge.net/images/icons/priorities/medium.svg","name":"Medium","id":"3"},"customfield_10200":null,"customfield_10400":null,"labels":[],"environment":null,"timeestimate":null,"aggregatetimeoriginalestimate":null,"versions":[],"duedate":null,"progress":{"progress":0,"total":0},"issuelinks":[{"id":"38294","self":"https://jira.geedge.net/rest/api/2/issueLink/38294","type":{"id":"10003","name":"Relates","inward":"relates to","outward":"relates to","self":"https://jira.geedge.net/rest/api/2/issueLinkType/10003"},"inwardIssue":{"id":"44359","key":"OMPUB-1325","self":"https://jira.geedge.net/rest/api/2/issue/44359","fields":{"summary":"【XJ-TEST】试验局TSG-OS处理总流量大于70Gbps 容器频繁重启","status":{"self":"https://jira.geedge.net/rest/api/2/status/1","description":"问题已经准备好让经办人开始处理。","iconUrl":"https://jira.geedge.net/images/icons/statuses/open.png","name":"开放","id":"1","statusCategory":{"self":"https://jira.geedge.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"待办"}},"priority":{"self":"https://jira.geedge.net/rest/api/2/priority/2","iconUrl":"https://jira.geedge.net/images/icons/priorities/high.svg","name":"High","id":"2"},"issuetype":{"self":"https://jira.geedge.net/rest/api/2/issuetype/10004","id":"10004","description":"","iconUrl":"https://jira.geedge.net/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype","name":"故障","subtask":false,"avatarId":10303}}}}],"comment":{"comments":[{"self":"https://jira.geedge.net/rest/api/2/issue/44497/comment/86468","id":"86468","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=gitlab","name":"gitlab","key":"JIRAUSER10210","emailAddress":"gitlab@geedgenetworks.com","avatarUrls":{"48x48":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=48","24x24":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=24","16x16":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=16","32x32":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=32"},"displayName":"gitlab","active":true,"timeZone":"Asia/Shanghai"},"body":"[陈子瞻|https://git.mesalab.cn/chenzizhan] mentioned this issue in [a commit|https://git.mesalab.cn/tsg/tsg-os-buildimage/-/commit/d9e74a817fe093f682dd836da7c823786169a9b7] of [TSG / tsg-os-buildimage|https://git.mesalab.cn/tsg/tsg-os-buildimage] on branch [fs4.6.7|https://git.mesalab.cn/tsg/tsg-os-buildimage/-/tree/fs4.6.7]:{quote}OMPUB-1339 fs4.6.7{quote}","updateAuthor":{"self":"https://jira.geedge.net/rest/api/2/user?username=gitlab","name":"gitlab","key":"JIRAUSER10210","emailAddress":"gitlab@geedgenetworks.com","avatarUrls":{"48x48":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=48","24x24":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=24","16x16":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=16","32x32":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=32"},"displayName":"gitlab","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-10-14T14:40:33.159+0800","updated":"2024-10-14T14:40:33.159+0800"},{"self":"https://jira.geedge.net/rest/api/2/issue/44497/comment/86469","id":"86469","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=gitlab","name":"gitlab","key":"JIRAUSER10210","emailAddress":"gitlab@geedgenetworks.com","avatarUrls":{"48x48":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=48","24x24":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=24","16x16":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=16","32x32":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=32"},"displayName":"gitlab","active":true,"timeZone":"Asia/Shanghai"},"body":"[陈子瞻|https://git.mesalab.cn/chenzizhan] mentioned this issue in [a merge request|https://git.mesalab.cn/tsg/tsg-os-buildimage/-/merge_requests/2760] of [TSG / tsg-os-buildimage|https://git.mesalab.cn/tsg/tsg-os-buildimage] on branch [fs4.6.7|https://git.mesalab.cn/tsg/tsg-os-buildimage/-/tree/fs4.6.7]:{quote}OMPUB-1339 fs4.6.7{quote}","updateAuthor":{"self":"https://jira.geedge.net/rest/api/2/user?username=gitlab","name":"gitlab","key":"JIRAUSER10210","emailAddress":"gitlab@geedgenetworks.com","avatarUrls":{"48x48":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=48","24x24":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=24","16x16":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=16","32x32":"https://www.gravatar.com/avatar/f66dd5efaf79bf21d0713eacdb61f7bd?d=mm&s=32"},"displayName":"gitlab","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-10-14T14:41:25.405+0800","updated":"2024-10-14T14:41:25.405+0800"},{"self":"https://jira.geedge.net/rest/api/2/issue/44497/comment/86474","id":"86474","author":{"self":"https://jira.geedge.net/rest/api/2/user?username=chenzizhan","name":"chenzizhan","key":"JIRAUSER11613","emailAddress":"chenzizhan@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?avatarId=10349","24x24":"https://jira.geedge.net/secure/useravatar?size=small&avatarId=10349","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&avatarId=10349","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&avatarId=10349"},"displayName":"陈子瞻","active":true,"timeZone":"Asia/Shanghai"},"body":"h2. 优化说明\r\nh2. 版本\r\n\r\n在环境中的是4.5.10 版本，本次性能优化仅在4.6.7 的更新版本中。在老版本上优化没有太大意义。把版本升级到24.10 以应用性能优化。\r\nh2.  \r\nh2. 分析\r\nh3. 是否对一次操作的反复查找进行优化\r\n\r\n注意到：“添加非primary 的metric，没有找到cell，然后添加一个新cell 成功“的cube 操作分支上有冗余的哈希查找操作，可以把这个分支上的3次HASH_FIND 调用优化，最激进可以优化到1次。\r\n\r\n使用模拟生成的流量进行了测试，测试环境：192.168.40.40，使用版本：fieldstat4.6.5。分别统计了fieldstat topk cube 上操作的4个分支的总次数（所谓总次数，就是全部线程、全部cube、全部metric、全部cell 上的次数均在一起统计，使用全局变量实现）。\r\n\r\n分别使用1500并发 2G 流量，1500并发 5G 流量和2700并发 2G 流量进行了测试。次数占比的定义是，操作满100万次后printf 打印运行情况，进入分支个数占统计个数总数的比值。\r\n\r\n得到结果是：\r\n\r\n\"添加非primary 的metric， 并找到了cell\" 分支: 在测试开始初期占比较少，之后迅速稳定到80%~87%之间，分别对应3000并发会话和1500并发会话。\r\n\r\n\"添加primary 的metric\"分支:                      占比17%左右\r\n\r\n这两个分支占据了几乎全部的分支。添加非primary 的metric，且没有找到cell后，添加dummy cell{*}成功{*}占比在1%左右，而添加失败的分支则个数非常少，以至于在实验中没有发生过关于它的报警。\r\n\r\n \r\n\r\n注意，此时TopK 的参数为K=1000，理论上，应当有更多的cell 作为小流量没有储存在heavy keeper中。我认为这是reset 的作用效果，它使得并发的流量个数还不足以在1秒内填满heavy keeper。然而，因为测试仪器的性能限制，这个流量大小已经是能测试的极限。但是，哪怕再增加流量大小，添加dummy cell 成功分支的占比只会更小，所以我们已经可以通过这样的情况估计：“添加非primary 的metric，且没有找到cell后，添加dummy cell{*}成功{*}”分支的占比很小，没必要对这一分支上的冗余调用做优化。\r\n\r\n因为优化会影响函数的调用逻辑，让查找和分配接口的职责不清晰，而另一方面，涉及到的问题分支的占比很小。对代码美观和接口设计的负面影响大于对性能的提高，所以不进行优化。\r\nh3. 是否开启uthash BLOOM filter 功能\r\n\r\n按照讨论时的指标，在新疆实验局的流量中，并发会话数可达10万，而调用fieldstat_counter_incrby 的频率是固定每秒一次，和会话的流量几乎无关。那么，绝大多数调用时，在哈希表中查找时应该都是找不到，这说明似乎BLOOM FILTER 可以大大加速这个查找不到的分支，因为根据火焰图，必有一次的hash find 占据了相当大的比重。见下图的get_exdata 部分，这个函数代表了仅查找而不添加的情况的占比。\r\n\r\n[^百分比.png]\r\n\r\n[^0.svg]\r\n\r\n然而，BLOOM filter 是不会被清空的，而且也不能被清空。因为在reset 的时候，heavy keeper 内的元素不是被从哈希表中删除，而是被设置为dying 状态，所以reset 也不是清除掉uthash table 中内置bloom filter sketch  的时机。一个越填越满的bloom filter 最终会失去效果，成为运行的负担。\r\n\r\n因此，结论是不开启。\r\n\r\n也许额外自己实现一个可删除的bloom filter？它涉及到对ut hash 内部函数的修改，工作量较大，且风险高。在运行时间较短，且流量并发数远大于cube容量的测试程序中开启了BLOOM_FILTER 宏，性能仅提高了7% 左右，衡量工作量和优化难度，决定不进行此优化。\r\nh3. 是否解决重复运算哈希值的问题\r\n\r\n因为XXhash 类运算占火焰图比重很低（只占7%左右），实际上多数分支上也只进行了一次哈希值运算，所以优化后的性能提升肯定还远小于7%。而为了优化这个问题，必将引入一个结构体，会破坏heavy keeper 和 spread sketch API定义的美观性，所以不进行优化。\r\nh3. 瓶颈究竟在哪？\r\n\r\n分析火焰图占比，heavy_keeper_add 函数缺乏可以优化的点，它单纯是完整的一个算法流程，多个函数均占有一定比重，没有明显的性能瓶颈。get0_exdata 接口本身就是一个HASH_FIND，提高它一次调用的性能无从下手，可是也许可以从降低其调用次数触发。\r\n\r\n结合https://jira.geedge.net/browse/TSG-22728 中给出的指标，一个会话在调用节点，居然要针对同一个dimension，进行174次fieldstat_counter_incrby 调用，做同样的dimension拼接，同样的哈希值计算174次，这里才是影响性能的关键。这174次的组成是：\r\n\r\n对于TOPK-METRIC:\r\n\r\n     对于24个cube的每个cube：\r\n         对于每个cube中的7个metric：\r\n                调用fieldstat_counter_incrby\r\n\r\nDOS-SKETCH-METRIC：（同上）对2个cube，3个metric，调用6次。\r\n\r\n \r\nh2. 方案\r\nh3. 暂不修改struct field 定义\r\n\r\n如果修改struct field 的定义方式，则可以把174次的拼接和哈希值计算缩减为1次。但是这个修改会直接不兼容的改变接口。而且，实际上，拼接tag 只占了火焰图的14.5%，似乎为了这14.5%的性能提升，完全修改接口调用方式也没有太大必要。\r\nh3. 对一个cube 上的重复cell 查找做cache\r\n\r\n至少，对同一个cube 上若干（在产品中是7次）次cell 的查找可以缩短为一次。在cube上添加了struct cached_cell，每次查找cell时，就先寻找是否是上一次传入的dimension，如果是，就直接使用上一次的cell指针（对于primary metric重新得到了新的cell指针的情况，会直接清空cache，同样的还有merge和reset等影响记录内容的操作）。\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n ","updateAuthor":{"self":"https://jira.geedge.net/rest/api/2/user?username=chenzizhan","name":"chenzizhan","key":"JIRAUSER11613","emailAddress":"chenzizhan@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?avatarId=10349","24x24":"https://jira.geedge.net/secure/useravatar?size=small&avatarId=10349","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&avatarId=10349","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&avatarId=10349"},"displayName":"陈子瞻","active":true,"timeZone":"Asia/Shanghai"},"created":"2024-10-14T16:33:38.782+0800","updated":"2024-10-15T15:47:21.341+0800"}],"maxResults":3,"total":3,"startAt":0},"votes":{"self":"https://jira.geedge.net/rest/api/2/issue/OMPUB-1339/votes","votes":0,"hasVoted":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"assignee":{"self":"https://jira.geedge.net/rest/api/2/user?username=chenzizhan","name":"chenzizhan","key":"JIRAUSER11613","emailAddress":"chenzizhan@geedgenetworks.com","avatarUrls":{"48x48":"https://jira.geedge.net/secure/useravatar?avatarId=10349","24x24":"https://jira.geedge.net/secure/useravatar?size=small&avatarId=10349","16x16":"https://jira.geedge.net/secure/useravatar?size=xsmall&avatarId=10349","32x32":"https://jira.geedge.net/secure/useravatar?size=medium&avatarId=10349"},"displayName":"陈子瞻","active":true,"timeZone":"Asia/Shanghai"},"updated":"2024-10-25T18:16:39.355+0800","status":{"self":"https://jira.geedge.net/rest/api/2/status/1","description":"问题已经准备好让经办人开始处理。","iconUrl":"https://jira.geedge.net/images/icons/statuses/open.png","name":"开放","id":"1","statusCategory":{"self":"https://jira.geedge.net/rest/api/2/statuscategory/2","id":2,"key":"new","colorName":"blue-gray","name":"待办"}}}}