做些铺垫
当今嵌入式设备OS系统优化面临的挑战难题有:
造成发热,卡顿,待机时间差的主要瓶颈是什么?当设置内核,JVM,资源管理功能的参数时,到底该怎么设置才合理?如何全面的评估某个算法的优化效果?
想要回答上面几个问题,目前的做法是根据几个有效日志或者通过本地复现的手段来寻找线索。虽然可以回答问题,也有理有据,但他的准确度是值得怀疑的。最根本的原因是样本量太少!
以问题3为例,假设是在评估某个CPUAffinity分配算法。可以通过单个或多个的benchmark结果来评估算法效果,但还是有可能发生“不知道的不知道”。
为了避免发生“不知道的不知道”,我们可以采用如下方法:
构建实验组与对照组,通过对比实验的方式量化优化效果。评估单维度指标,也可以同时评估多个维度的指标变化。量化不同算法下的系统主要瓶颈变化,用于排除优化一个场景反而带来另一个场景的性能降低。
为了实现方法1,2,我们应该具备如下能力:
低负载的多维度数据监控与存储器。大数据分析能力。全栈业务领域知识。数据科学
那我们怎么才能系统化的建设这方面能力呢?下面引申出本文章的主题,数据科学。
?
Datascienceisamulti-disciplinaryfieldthatusesscientificmethods,processes,algorithmsandsystemstoextractknowledgeandinsightsfromstructuredandunstructureddata.-维基百科
?
这里的关键词是scientificmethod,extractknowledgeandinsights。使用科学的方法,从数据中获得洞见。随着大数据技术的完善与普及,通过利用大量采集而来的数据来认识事物本质成为了可能。而我们习惯的思考模式是从个别现象中寻找共性,然后再用大量事实来验证此共性是否准确。第二种方法进展缓慢,且成本也大。但第一种就不一样了,随着数据的存储跟计算越来越便宜,我们可以直接使用数据获得有用的洞见。
若想成功应用数据科学,需要兼备如下多学科知识跟技能:
概率与统计学机器学习业务领域知识计算机科学代码编程数据可视化表达与沟通应用数据科学的步骤
针对系统优化领域,我们应该怎么使用数据科学方法获得洞见呢?我认为以下6个步骤是必须的,而且严格按照顺序执行:
定义分析目的定义有效的评估指标数据收集器的设计与实现根据分析目的,选择对应的分析模型来分析数据寻找洞见根据洞见反推设计,并得到改善[步骤1]定义分析目的
分析目的不同设计的指标与分析方法也不同,常见的分析目的有:
趋势观察A/BTest异常时问题分析瓶颈分析异常预警[步骤2]定义有效的评估指标
这步骤主要考验领域知识的掌握深度,因为指标的主要来源以及服务目标就是来自于业务。指标定义要优先于优化方案评估,目的在于你的优化方案要为指标的优化而努力。这时候指标更像是一种优化目标的量化方法,如果优化目标无法量化也意味着你的不明白你到底要做什么。好指标应当结合业务需求,技术需求的不同角度来综合设计。比如谷歌的WSMeter指标,阿里数据中心的WorkDone指标。通过思考指标的定义,也促使自己思考优化的方向。一个好的指标,像个灯塔一样,非常准确地指引着优化目标,而一个坏的指标往往会导致顾此失彼的结果。
提到指标,就不得不提到北极星指标(NorthStartMetric),又被称为唯一重要的指标。它是用户增长领域里的概念,意指像北极星一样高高闪耀在天空中,指引着全公司上上下下向着同一个方向努力。虽然
转载请注明:http://www.deudeguo.com/jynr/18544.html