Benchmark

使用 Horoscope 测试 TiDB 优化器

半城伤御伤魂 提交于 2020-10-03 06:35:10
优化器在数据库中一直位于至关重要的位置,性能调优也常常需要围绕优化器来进行。作为数据库厂商,我们希望在各类复杂的业务场景中,TiDB 都能够给出比较理想的执行计划,因此在优化器和执行器上做了非常多的工作和努力,但是选错执行计划或者索引的情况仍然是日常中最为常见的一个问题。 优化器有关的问题可以简单归结为两种: 统计信息准确的情况下给出了错误的执行计划。 另一类则是在统计信息过期的情况下给错了执行计划。 选错索引是其中比较常见的一种情况,用户希望添加索引来加速查询速度,某些情况下,优化器可能会走到全表扫的物理执行计划或者选错索引使得实际执行效果退化成全表扫的情况。 针对上述情况,我们需要从更微观的层面来度量优化器的执行计划和索引选择的性能,评估在优化器上做的改进工作能否切实起到期望的效果。 为什么我们要开发 Horoscope? 为了测量优化器和执行器,从去年开始我们构建了daily benchmark 平台 perf.pingcap.com,覆盖常见的几种复杂查询的测试场景,包含 TPC-H、TPC-DS、Star Schema Benchmark 等,跟踪每天开发分支上这些查询的执行速度情况。 通过 daily benchmark,我们观测和定位到了若干次性能提升以及性能回退的情况。有些提升或者回退是优化器组件上的优化导致的,有些则是 TiDB 其他组件,或者存储层引发的。 虽然

数据库链接池终于搞对了,从100ms优化到3ms!

眉间皱痕 提交于 2020-10-02 21:00:29
“ 我在研究 HikariCP(一个数据库连接池)时无意间在 HikariCP 的 Github wiki 上看到了一篇文章,这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽。 图片来自 Pexels 本文内容 95% 译自这篇文章 : https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing 数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。 1 万并发用户访问 想象你有一个网站,压力虽然还没到 Facebook 那个级别,但也有个 1 万上下的并发访问,也就是说差不多 2 万左右的 TPS。 那么这个网站的数据库连接池应该设置成多大呢?结果可能会让你惊讶,因为这个问题的正确问法是:“这个网站的数据库连接池应该设置成多小呢?” 下面这个视频是 Oracle Real World Performance Group 发布的,请先看完: http://www.dailymotion.com/video/x2s8uec 因为这视频是英文解说且没有字幕,我替大家做一下简单的概括:视频中对 Oracle 数据库进行压力测试,9600 并发线程进行数据库操作,每两次访问数据库的操作之间 sleep 550ms,一开始设置的中间件线程池大小为

clickhouse总览

北城以北 提交于 2020-10-01 01:37:58
简介 Yandex在2016年6月15日开源的一个数据分析的数据库,名字叫做ClickHouse ClickHouse存储层 ClickHouse从OLAP场景需求出发,定制开发了一套全新的高效列式存储引擎,并且实现了数据有序存储、主键索引、稀疏索引、数据Sharding、数据Partitioning、TTL、主备复制等丰富功能。以上功能共同为ClickHouse极速的分析性能奠定了基础。 列式存储 相比于行式存储,列式存储在分析场景下有着许多优良的特性。 1)如前所述,分析场景中往往需要读大量行但是少数几个列。在行存模式下,数据按行连续存储,所有列的数据都存储在一个block中,不参与计算的列在IO时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计算的列即可,极大的减低了IO cost,加速了查询。 2)同一列中的数据属于同一类型,压缩效果显著。列存往往有着高达十倍甚至更高的压缩比,节省了大量的存储空间,降低了存储成本。 3)更高的压缩比意味着更小的data size,从磁盘中读取相应数据耗时更短。 4)自由的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。 5)高压缩比,意味着同等大小的内存能够存放更多数据,系统cache效果更好。 官方数据显示,通过使用列存,在某些分析场景下

对抗方法过滤数据中的 Bias

て烟熏妆下的殇ゞ 提交于 2020-09-30 13:41:18
标题: Adversarial Filters of Dataset Biases 来源 : ICML 2020,Allen Institute for Artificial Intelligence 原文链接: https:// arxiv.org/abs/2002.0410 8 Abstract 大型神经网络模型在语言和视觉基准测试上已经表现出人类的水平,然而在面对对抗性的或 out-of-distribution 样本时,模型的性能会大幅下降。由此引出一个问题:这些模型是否是通过过拟合虚假的数据集 bias 而学会了解决 dataset 而不是基础的 task 。文中研究了一种最近提出的方法, AFLITE ,它通过对抗过滤这样的数据偏差来减轻普遍高估的机器变现。作者还未 AFLITE 提供了一个理论性的理解,通过将其置于最优 bias 减少的广义框架中。文中提出了大量的支持证据,证明 AFLITE 广泛使用于减少可测量的数据集bias上,并且在过滤好的数据集上训练的模型对 out-of-distribution 的任务有更好的泛化能力。最终,过滤导致模型性能大幅下降(SNLI 从92%下降到62%),但人工的表现依旧很高。因此,本文的工作表明,经过过滤的数据集可以作为升级的 benchmarks,为鲁棒性泛化带来新的研究挑战。 Introduction 在很多受欢迎的AI

Linux下的I/O复用与epoll详解

时光怂恿深爱的人放手 提交于 2020-09-30 06:55:46
前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解。 为什么会是EPOLL select的缺陷 高并发的核心解决方案是1个线程处理所有连接的“等待消息准备好”,这一点上epoll和select是无争议的。但select预估错误了一件事,当数十万并发连接存在时,可能每一毫秒只有数百个活跃的连接,同时其余数十万连接在这一毫秒是非活跃的。select的使用方法是这样的: 返回的活跃连接 ==select(全部待监控的连接)。 什么时候会调用select方法呢?在你认为需要找出有报文到达的活跃连接时,就应该调用。所以,调用select在高并发时是会被频繁调用的。这样,这个频繁调用的方法就很有必要看看它是否有效率,因为,它的轻微效率损失都会被“频繁”二字所放大。它有效率损失吗?显而易见,全部待监控连接是数以十万计的,返回的只是数百个活跃连接,这本身就是无效率的表现。被放大后就会发现,处理并发上万个连接时,select就完全力不从心了。 此外,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD

《BERT 的优秀变体:ALBERT 论文图解介绍》2020-05,作者:amitness,译者:ronghuaiyang

断了今生、忘了曾经 提交于 2020-08-20 05:10:12
ALBERT论文: https://arxiv.org/pdf/1909.11942.pdf 英文原文: https://amitness.com/2020/02/albert-visual-summary/ 译文链接: https://www.6aiq.com/article/1589833968655 NLP 最新发展的基本前提是赋予机器学习这些表示的能力。 BERT 1. 掩码语言建模 传统的语言建模 BERT使用的掩码语言建模 2. 下一个句子预测 “下一个句子预测”的目的是检测两个句子是否连贯。 3. Transformer结构 将输入转换成大小为768的向量。关于Transformer和BERT非常好的文章: https://jalammar.github.io/illustrated-transformer/ http://jalammar.github.io/illustrated-bert/ ALBERT总结的BERT的两类问题 1. 内存限制和通信开销 BERT模型非常大,BERT-large有24个隐含层,约3.4亿参数,若想改进需要大量计算资源。 2. 模型退化 更大的模型,更好的性能? Albert作者将BERT-large的隐含层单元从1024增加到2048,在语言建模任务和阅读理解测试中,都有所下降。在阅读理解测试中从73.9%下降到54.3%。

OneFlow机器学习框架介绍

白昼怎懂夜的黑 提交于 2020-08-18 11:20:55
OneFlow 是什么? OneFlow 是开源的、采用全新架构设计,世界领先的工业级通用深度学习框架。特点包括: 分布式训练全新体验,多机多卡如单机单卡一样简单 完美契合一站式平台(k8s + docker) 原生支持超大模型 近零运行时开销、线性加速比 灵活支持多种深度学习编译器 自动混合精度 中立开放,合作面广 持续完善的算子集、模型库 更多参考: OneFlow特点与机器学习的未来 OneFlow官方在线文档的 github仓库 OneFlow在线文档: http://docs.oneflow.org/ BenchMark项目: https://github.com/Oneflow-Inc/OneFlow-Benchmark API项目: https://github.com/Oneflow-Inc/oneflow-api 在线文档不仅有 OneFlow系统设计 的介绍,还包括以下模块: 【 首页】 【 快速上手】 【基础专题】 【拓展专题】 【高级应用实例】 【API】 【OneFlow开源计划】 本仓库包含中文文档和英文文档,分别存放于cn、en文件夹下,文档目录结构树: . ├── quick_start 快速上手 ├── basics_topics 基础专题 ├── extended_topics 拓展专题 ├── code 文档示例代码 │ ├── basics

发挥《WELL 健康 – 安全评价准则》之威力,IWBI加强对酒店及度假村服务力度

不羁岁月 提交于 2020-08-17 23:46:57
全球领先的健康建筑认证机构推出酒店及度假村 WELL 顾问委员会 委员会联合主席包括美国联邦卫生部第 17 届公共健康管理署长理查德 · 卡莫纳、梅奥医学中心幕僚长兼传染病学教授思戴西 · 瑞扎 纽约--(美国商业资讯)--全球领先的健康建筑认证机构国际WELL建筑研究院(IWBI)今日宣布成立专门针对酒店及度假村产业的WELL顾问委员会,为IWBI刚刚推出的《设施与运营管理WELL 健康 – 安全评价准则》提供极具针对性的行业洞察及指导建议。这是一套建立在循证研究基础上、由第三方独立验证的评价准则,适用于全球所有类别物业在COVID-19 疫情后根据这一准则采取适当的运营管理政策、清洁管理制度、以及改善相关的设计方案。IWBI计划于2020年6月底开始针对设施及运营管理提供WELL 健康 – 安全评价服务。 本新闻稿包含多媒体。此处查看新闻稿全文: https://www.businesswire.com/news/home/20200611005941/zh-CN/ 这一评价准则借助了WELL健康建筑标准中已有的相关条款、IWBI COVID-19 特别工作组的最新的研究贡献、以及权威机构针对COVID -19 和呼吸系统疾病防控提出的导则,包括美国联邦疾病防控中心和联邦健康与人力服务部、以及世界卫生组织针对COVID-19及其它呼吸系统疾病提出的防疫指南

PFLD:高精度实时人脸关键点检测算法

给你一囗甜甜゛ 提交于 2020-08-17 08:33:45
这篇文章作者分别来自天津大学、武汉大学、腾讯AI实验室、美国天普大学。该算法对在高通ARM 845处理器可达140fps;另外模型大小较小,仅2.1MB;此外在许多关键点检测的benchmark中也取得了相当好的结果。 摘要: 高精度,速度快,模型小是人脸关键点的实际使用必不可少的要求。为了同时考虑这三个问题,本文研究了一个整洁的模型,该模型在野外环境(如无约束的姿态、表情、光照和遮挡条件)和移动设备上的超实时速度下具有良好的检测精度。更具体地说,我们定制了一个与加速技术相关的端到端single stage 网络。在训练阶段,对每个样本进行旋转信息进行估计,用于几何规则的关键点定位,然后在测试阶段不涉及。在考虑几何规则化的基础上,设计了一种新的损失算法通过调整训练集中不同状态(如大姿态、极端光照和遮挡)的样本权重,来解决数据不平衡的问题。我们进行了大量的实验来证明我们的有效性,在被广泛采用的具有挑战性的基准测试中, 300W(包括iBUG, LFPW, AFW, HELEN,以及XM2VTS)和AFLW,设计并显示其优于最先进的替代品的性能。我们的模型只有2.1Mb 大小和达到140帧/张在手机上 (高通ARM 845处理器)高精度,适合大规模或实时应用。 为了能更清晰了解文章的内容,用下面的思维导图来展示文章的主要贡献 Introduction 人脸关键点检测也称为人脸对齐

性能调优必备利器之 JMH

我是研究僧i 提交于 2020-08-17 08:14:30
武培轩 推荐搜索 Java数据结构Spring BootMySQLRedisNginx if 快还是 switch 快?HashMap 的初始化 size 要不要指定,指定之后性能可以提高多少?各种序列化方法哪个耗时更短? 无论出自何种原因需要进行性能评估,量化指标总是必要的。 在大部分场合,简单地回答谁快谁慢是远远不够的,如何将程序性能量化呢? 这就需要我们的主角 JMH 登场了! JMH 简介 JMH(Java Microbenchmark Harness)是用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级。该工具是由 Oracle 内部实现 JIT 的大牛们编写的,他们应该比任何人都了解 JIT 以及 JVM 对于基准测试的影响。 当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用 JMH 对优化的结果进行量化的分析。 JMH 比较典型的应用场景如下: 想准确地知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性 对比接口不同实现在给定条件下的吞吐量 查看多少百分比的请求在多长时间内完成 下面我们以字符串拼接的两种方法为例子使用 JMH 做基准测试。 加入依赖 因为 JMH 是 JDK9 自带的,如果是 JDK9 之前的版本需要加入如下依赖(目前 JMH 的最新版本为 1.23): <dependency> <groupId