Delta

理解LINUX LOAD AVERAGE的误区

懵懂的女人 提交于 2020-04-09 14:51:03
uptime和top等命令都可以看到load average指标,从左至右三个数字分别表示1分钟、5分钟、15分钟的load average: $ uptime 10:16:25 up 3 days, 19:23, 2 users, load average: 0.00, 0.01, 0.05 $ uptime 10:16:25 up 3 days, 19:23, 2 users, load average: 0.00, 0.01, 0.05 Load average的概念源自UNIX系统,虽然各家的公式不尽相同,但都是用于衡量正在使用CPU的进程数量和正在等待CPU的进程数量,一句话就是runnable processes的数量。所以load average可以作为CPU瓶颈的参考指标,如果大于CPU的数量,说明CPU可能不够用了。 但是,Linux上不是这样的! Linux上的load average除了包括正在使用CPU的进程数量和正在等待CPU的进程数量之外,还包括uninterruptible sleep的进程数量。通常等待IO设备、等待网络的时候,进程会处于uninterruptible sleep状态。Linux设计者的逻辑是,uninterruptible sleep应该都是很短暂的,很快就会恢复运行,所以被等同于runnable。然而uninterruptible

Git提交代码push的时候报错常见错误

白昼怎懂夜的黑 提交于 2020-04-09 12:18:58
今天我想rk的sdk包里面的一些东西提交到我的git服务器上,结果,总是报错,折腾了一下午,结果才解决。 首先看看我提交代码的时候,报错的信息: git.exe push --progress "origin" master:master Counting objects: 43142, done. Delta compression using up to 8 threads. Compressing objects: 100% (25108/25108), done. Writing objects: 100% (43142/43142), 824.64 MiB | 26.18 MiB/s, done. Total 43142 (delta 14030), reused 43141 (delta 14030) fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large Everything up-to-date git did not exit cleanly (exit

开发者说丨手把手教你写扩展卡尔曼滤波器

笑着哭i 提交于 2020-04-09 06:35:00
本文作者:Apollo开发者社区 卡尔曼滤波器 是一种由卡尔曼(Kalman)提出的用于时变线性系统的递归滤波器。这个系统可用包含 正交状态变量的微分方程模型 来描述,这种滤波器是将过去的测量估计误差合并到新的测量误差中来估计将来的误差。 当系统状态方程 不符合线性假设时 ,采用卡尔曼滤波无法获得理想的最优估计;在描述机器人状态时常常不满足卡尔曼滤波的假设,为了仍然能够使用卡尔曼滤波,我们采用 对 非线性系统进行线性化 等方法来扩大卡尔曼滤波的使用范围。扩展卡尔曼滤波与卡尔曼滤波主要 区别 在于:对状态方程和观测方程 泰勒展开 。 本文由 百度Apollo智能汽车事业部 自动驾驶工程师——陈光 撰写,对 扩展卡尔曼滤波器 进行了详细讲解,希望感兴趣的同学能通过阅读这篇文章有所收获。 以下,ENJOY 前言 在之前分享的 《开发者说 | 手把手教你写卡尔曼滤波器 》 中 , 以一个匀速运动小车的模型为例,让读者从感性上认识了卡尔曼滤波器的基本原理,它包含 预测(Prediction) 和 测量值更新(Measurement update) 两大过程。预测和测量值更新的交替执行,实现了卡尔曼滤波在状态估计中的闭环。 随后,我从 理性分析 的角度,以无人驾驶中 激光雷达 测量障碍物位置的数据为例,结合卡尔曼滤波所用到的公式,使用C+

【cs224w】Lecture 4

本小妞迷上赌 提交于 2020-04-08 20:33:11
Community 转自本人: https://blog.csdn.net/New2World/article/details/105328390 之前讲到了网络中节点扮演不同角色,而角色这个概念和社区互补,那么接下来就讨论下社区这个概念。 以找工作为例,曾经学者 Granovetter 调查过人们的工作是由谁介绍的,结果很意外。大部分人的工作是由“熟人”,或者说关系并不是很密切的人介绍的。然后 Granovetter 分析后提出了他的解释:这种“熟人”可能涉及整个社交网络很广泛的区域 (普遍来说通过 \(6.6\) 个人就能认识全世界任何人)。这样一来他们很可能覆盖了很多行业,其中一个就是你的专业。然后将这个解释整理一下就得到了如下两个方面的结论: 结构上连接紧密的边的社会性更强;跨度大的边连接了网络不同的两个或多个领域反而社会性不稳定 从信息传播的角度来看,跨度大的边能传递不同领域的信息,在找工作方面更有利;而结构上连接密的边过于冗余因此无法提供新的信息 Granovetter 的这个理论在后来电话网络中得到了印证,即连接更强的边一般都有更频繁的电话联络。这里提到一个 edge overlap 需要记录一下,它衡量了两个点间连接的紧密程度。当某条边是 local bridge 时,重叠率为 \(0\) 。 \[O_{ij}=\frac{|(N(i)\cap N(j))\text

关于调和函数的一些性质

柔情痞子 提交于 2020-04-08 18:30:13
以下均为10年前讨论的一些内容,或者更早一些。 问题1 .考虑调和函数 $-\Delta u=0\ \ \mbox{in}\ \ R^n$, $n\geq2$, 且$u(x)\geq -(1+|x|)^{\alpha}$ in $R^n$, 其中$\alpha\in(0,1)$, 证明: $u$必为常数。 证明:(1) 考虑直接对$u-\inf\limits_{B_{2R}}u$在$B_R$上使用Harnack 不等式,则 $$\sup_{B_{R}}u-\inf_{B_{2R}}u\leq C(u(0)-\inf_{B_{2R}}u).$$ 那么 $$\sup_{B_{R}}u\leq C|u(0)|+(1-C)\inf_{B_{2R}}u\leq C|u(0)|+(C-1)(1+2R)^{\alpha},$$ 这样就有 $$\sup_{B_{R}}|u|\leq C|u(0)|+C(1+2R)^{\alpha}$$ 最后用调和函数的梯度内估计就可以得到结论了。 (2)第二种方法是利用平均值公式推导梯度估计的方法,并结合积分中值定理即可知道$\nabla u \equiv 0$. 具体细节见 Oleinik的《偏微分方程讲义》,当然本问题还可以推广控制的阶数。 问题2 .考虑二维情形的 全平面 下调和函数 上有界,则必为常数。具体如下: $$u\in C^2(R^2),\ \ \

学习笔记:模拟退火

痞子三分冷 提交于 2020-04-08 18:15:40
引言 一谈到模拟退火,大家都知道是 玄学算法 ,但是他是如何 \(A\) 题的呢? 以下为正文: \(Part.1\) 从和 \(OI\) 无关的内容说起 模拟退火,即模拟金属退火这一过程,来实现最优解的寻找。 金属退火,对于我们似乎很遥远了,那我们举个实际点的例子吧。 学过化学的都知道,在蒸发结晶时,我们会在蒸发皿还有部分溶剂时停止加热,用余热蒸干剩余液体。 这就是一个退火过程,它的实质就是 降温 。 这样的好处是,在达到目的的前提下,尽量减少了能源(热量)消耗。 这是一个双赢过程。 \(Part.2\) 模拟退火针对的问题 模拟退火是一种通用的算法,特别是对于最优解问题。 所以所有最优解问题都可以用模拟退火,它是一种实用性较高的算法。 对于每个最优解问题,只要套上模拟退火,即使不能 \(AC\) ,也能得到一个可观的的分数。 \(Part.3\) 模拟退火的最简单问题 还记得 三分法 这个题吗? 我们如果不能保证在 \([l,r]\) 内只有一个峰值,该如何寻找最值呢? 考虑一个无脑的解法,我们维护一个扫描线,按精度从一边向另一边扫,找到峰值后就贪心的认为是最优解。 不过这样显然是错的 最优解可能要先翻过这座山。 考虑全扫一遍,这样的复杂度爆炸。 那我们以一定的概率向前扫,当然是在保存现有最优解的前提下。 当然,这样还会被卡,如果峰值很远,那就会 \(TLE\) 。

机器学习笔记(七)——初识逻辑回归、两种方法推导梯度公式

我的未来我决定 提交于 2020-04-05 18:57:21
一、算法概述 逻辑回归(Logistic)虽带有回归二字,但它却是一个经典的二分类算法,它适合处理一些二分类任务,例如疾病检测、垃圾邮件检测、用户点击率以及上文所涉及的正负情感分析等等;首先了解一下何为回归?假设现在有一些数据点,我们利用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合的过程就称作回归。利用逻辑回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。 线性回归算法后面的笔记会介绍,这里简单对比一下两者,逻辑回归和线性回归的本质相同,都意在拟合一条直线,但线性回归的目的是拟合 输入变量的分布 ,尽可能让所有样本到该条直线的距离最短;而逻辑回归的目的是拟合 决策边界 ,使数据集中不同的样本尽可能分开,所以两个算法的目的是不同的,处理的问题也不同。 二、Sigmoid函数与相关推导 我们想要的函数应该是,能接受所有的输入并且预测出类别,比如二分类中的0或者1、正或者负,这种性质的函数被称为海维赛德阶跃函数,图像如下: 但这种函数的问题在于从0跳跃到1的过程非常难处理,比如我们常接触的多次函数,可能在某种条件下需要求导解决问题;而 Sigmoid 函数也具有类似的性质,并且在数学上更容易处理,其公式如下: 下图是 Sigmoid 函数在不同坐标尺度下的两条曲线图。当x为0时, Sigmoid 函数值为0.5,随着x的增大

使用SSE2指令集加速字符替换

怎甘沉沦 提交于 2020-03-23 20:59:50
3 月,跳不动了?>>> 本文地址: https://www.laruence.com/2020/03/09/5412.html 转载请注明出处 这个算是一个比较有用的性能优化技巧吧,主要是刚刚在 重构Yaf_Loader 的时候又用到,想着这个操作比较常见,就专门拎出来做个小分享。 我们在写代码的时候,在字符串处理的时候,可能会遇到这样的需求,就是把一个目标字符串中所有出现的某个字符a替换为另外一个字c. 比如对于Yaf_Loader中,在处理命名空间的类名的自动加载的时候,我需要把所有的\替换为_, 一般通常的写法会是: char *pos = class_name; size_t len = class_name_len; while ((pos = memchr(pos, '\\', len - (pos - class_name)))) { *pos++ = '_'; } 而目前SIMD指令的支持已经非常普遍,尤其SSE2,基本当代的CPU都支持, 可以通过cat /proc/cpuinfo来看cpu支持的SIMD指令集: cat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts

使用SSE2指令集加速字符替换

纵饮孤独 提交于 2020-03-20 23:27:58
3 月,跳不动了?>>> 本文地址: https://www.laruence.com/2020/03/09/5412.html 转载请注明出处 这个算是一个比较有用的性能优化技巧吧,主要是刚刚在 重构Yaf_Loader 的时候又用到,想着这个操作比较常见,就专门拎出来做个小分享。 我们在写代码的时候,在字符串处理的时候,可能会遇到这样的需求,就是把一个目标字符串中所有出现的某个字符a替换为另外一个字c. 比如对于Yaf_Loader中,在处理命名空间的类名的自动加载的时候,我需要把所有的\替换为_, 一般通常的写法会是: char *pos = class_name; size_t len = class_name_len; while ((pos = memchr(pos, '\\', len - (pos - class_name)))) { *pos++ = '_'; } 而目前SIMD指令的支持已经非常普遍,尤其SSE2,基本当代的CPU都支持, 可以通过cat /proc/cpuinfo来看cpu支持的SIMD指令集: cat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts

分布式存储原理:ElasticSearch

安稳与你 提交于 2020-03-18 21:53:44
3 月,跳不动了?>>> 对于一个分布式存储系统来说, 数据是分散存储在多个节点上的 。如何让数据 均衡 的分布在不同节点上,来保证其高可用性? 所谓均衡,是指系统中每个节点的负载是均匀的,并且在发现有不均匀的情况或者有节点增加/删除时,能及时进行调整,保持均匀状态 。本文将探讨Elasticsearch的数据分布方法,文中所述的背景是Elasticsearch 5.5。   在Elasticsearch中,以Shard为最小的数据分配/迁移单位。数据到节点的映射分离为两层:一层是数据到Shard的映射(Route),另一层是Shard到节点的映射(Allocate)。   一方面,插入一条数据时, ES会根据指定的Key来计算应该落到哪个Shard上 。默认Key是自动分配的id,可以自定义,比如在我们的业务中采用CompanyID作为Key。 因为Primary Shard的个数是不允许改变的,所以同一个Key每次算出来的Shard是一样的,从而保证了准确定位 。 shard_num = hash(_routing) % num_primary_shards   另一方面,Master会为每个Shard分配相应的Data节点进行存储,并维护相关元信息。 1、通过Route计算出来的Shard序号,2、在元信息中找到对应的存储节点,便可完成数据分布 。Shard