系统网络
文章平均质量分 54
smartcat2010
这个作者很懒,什么都没留下…
展开
-
Docker常用命令
Run完结束自动删除container,避免很多Exited状态的container(用docker ps -a才能看到)原创 2023-05-20 14:20:52 · 589 阅读 · 0 评论 -
Linux创建新用户和key登陆
Linux创建新用户和key登陆原创 2022-10-26 20:05:04 · 2368 阅读 · 0 评论 -
Chrome Trace 资料
官方文档:Trace Event Format - Google 文档中文简介:(168条消息) 强大的可视化利器 Chrome Trace Viewer 使用详解_csdn_yuan88的博客-CSDN博客_trace viewer转载 2022-09-08 18:51:49 · 838 阅读 · 0 评论 -
使用ab命令对web服务进行压力测试
使用ab命令对web服务进行压力测试转载 2022-07-28 17:18:49 · 229 阅读 · 0 评论 -
查看网络被哪个进程占用得多
网络,linux原创 2022-06-13 13:59:06 · 454 阅读 · 0 评论 -
ubuntu下agt-get包管理命令
apt-cache search package 搜索软件包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install package 安装包 sudo apt-get install package --reinstall 重新安装包 sudo apt-get -f install 修复安装 sudo apt-get remove package 删除包 sudo...转载 2022-04-06 07:33:12 · 552 阅读 · 0 评论 -
conda的好处
conda: python虚拟环境管理工具,其中一个功能是安装python包。 pip: python的包管理工具,可以用于安装python包。 miniconda: conda的压缩包,自带了一个名为base的虚拟环境,这个虚拟环境里只安装了python和几个必要的库。 anaconda:conda的压缩包。自带了一个名为base的虚拟环境,这个虚拟环境里安装了很多和数据处理有关的python包。比如我们今天要跑一个开源仓库,该仓库依赖了python2.7和torch0.4,而你又不想把你现在环境转载 2022-02-06 10:49:16 · 3328 阅读 · 0 评论 -
静态库和动态库的区别
静态库和动态库最本质的区别就是:该库是否被编译进目标(可执行文件)内部。静态(函数)库一般扩展名为(.a或.lib),这类的函数库通常扩展名为libxxx.a或xxx.lib 。这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容;但是从升级难易度来看明显没有优势,如果函数库更新,需要重新编译。动态函数库动态函数库的扩展名一般为(.so或.dll),这类函数库通常名为libx转载 2022-02-05 17:53:46 · 232 阅读 · 0 评论 -
经过CPU来做内存拷贝,会导致Cache污染
在hishscalability.com上看到一篇文章:Strategy: Stop Using Linked-Lists(这文章写的挺烂,只列结论没有具体分析),正好上周看到了一篇讲同样事情的文章为什么python标准库没有链表。两篇文章主题都是让大家写代码的时候少用链表,多用数组,主要原因是locality,局部性差的后果轻则cache miss,重则page fault。数组由于存储在连续空间里,其局部性显然是好过链表。还记得大学操作系统课上老师说过:「局部性是编程里最重要的概念之一」,当时听的一转载 2021-11-29 23:04:28 · 1224 阅读 · 0 评论 -
循环展开的优缺点
优点:循环展开能够增大指令调度的空间,减少循环分支指令的开销。即增大指令流水线的效率。循环展开可以更好地实现数据预取技术。缺点:嵌入式设备上,增大了指令cache miss的可能。复杂功能的展开,没什么优化效果...原创 2021-11-10 09:29:47 · 1210 阅读 · 0 评论 -
软件设计原则:SOLID
SOLID - WikipediaTheSingle-responsibility principle: "There should never be more than one reason for aclassto change."[5]In other words, every class should have only one responsibility.[6] TheOpen–closed principle: "Software entities... should be ...转载 2021-06-25 13:26:44 · 99 阅读 · 0 评论 -
Windows上查看端口被哪个进程连接着或者监听着
启动Resource Manager原创 2021-03-12 21:14:35 · 251 阅读 · 0 评论 -
CPU、内存、操作系统的硬核知识
原文比较指令的实现:做减法运算,根据标志寄存器里表示结果正负零的位,指示是大于等于还是小于的结果。转载 2020-03-10 20:16:28 · 150 阅读 · 0 评论 -
CAS/Interlocked操作的原理
CAS/Interlocked操作的原理在Intelx86指令体系中,有些运算指令加上lock前缀就可以保证该指令操作的原子性。其原理是CPU执行该指令时发现其前面加lock前缀,就会在总线维持一个硬件信号以阻止其他CPU(或线程)访问与该指令相同的目标内存地址。(注意是指令目标操作数的内存地址而且这些地址是经过内存对齐过的!)Interlocked单向链表函数(就是一个栈) ①使用...转载 2020-03-07 14:08:44 · 657 阅读 · 0 评论 -
CPU L1-cache的false-sharing
L1-cache加载和失效的单位是64字节;所以2个变量挨着放,线程1和线程2虽然两者访问的是不同地址的变量(至少有一个线程在写入),也会导致2个L1-cache该行不停的失效,不停的加载内存进L1-cache,导致速度损失。解决方法:加padding,让不同线程访问的2个变量离得远些,不在同一cache行。挨着和不挨着,人家测的性能对比,损失和线程个数基本成倍数:...原创 2020-03-01 18:13:14 · 351 阅读 · 1 评论 -
Lock-free队列(无图版)
1. IntroductionImproving applications with high-performance constraints has an obvious choice nowadays:Multithreading. Threads have been around for quite a long time. In the old days, when most com...转载 2020-02-29 23:42:47 · 1348 阅读 · 0 评论 -
lock-free数据结构
Lock-Free 学习总结参考文章Lock-Free Data Structures, Andrei Alexandrescu, 2004 Lock-Free Data Structures with Hazard Pointers, Andrei Alexandrescu, Maged Michael, 2004 Implementing Lock-Free Queues, Joh...转载 2020-02-29 20:32:57 · 575 阅读 · 1 评论 -
分布式系统的CAP理论
分布式系统的CAP理论2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。CAP理论概述一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区...转载 2020-02-26 18:00:40 · 248 阅读 · 0 评论 -
锁:InterlockedCompareExchage, CriticalSection, Mutex
几种锁的性能比较从快到慢:InterlockedExchange, CriticalSection, SpinCriticalSection, 自己写的SpinLock(Interlocked和死循环组成), MutexInterlockedExchange: CPU提供的一种机制,在更新内存的时候锁住内存总线,防止其他CPU同时也修改同一块内存。interlocked指令会锁住内存总...原创 2020-02-21 23:10:04 · 530 阅读 · 0 评论 -
用户态和内核态
加锁为什么慢:有些同步原语是操作系统的内核对象,调用该原语会带来昂贵的上下文切换(用户态切换到内核态)代价;自旋锁的介绍:先循环N次,期间如果拿到锁则不用进内核态了,没拿到才进内核态去等待;例子: CriticalSection可以设成自旋,也可设成非自旋;用户态和内核态介绍为什么要有用户态和内核态: 由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者...原创 2020-02-13 23:32:16 · 449 阅读 · 0 评论 -
volatile, atomic, memory_order
volatile在C++标准里的语义C++标准里,volatile修饰的变量:不允许被优化消失(optimized out);(编译器不能做任何假设和推理,都必须按部就班地与「内存」进行交互。复用寄存器中的值」就是不允许的) 于序列上在另一个对volatile对象的访问之前。(只能确保volatile变量之间的顺序,不能确保非volatile变量的先后顺序;volatile只作用在...原创 2020-02-12 21:56:11 · 220 阅读 · 1 评论 -
Kubernetes入门
Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。是一个多容器管理解决方案。容器通过Kubernetes相互通信。Kubernetes是管理Docker容器的平台,为了把Docker走向大规模集群。系统由1个Master和多个Node组成。Node上可运行1~N个Pod,Pod是可复制弹性伸缩的单元,Pod上可运行1~N个Docker容器。Pod是无状态...原创 2020-02-07 12:05:11 · 185 阅读 · 0 评论 -
protobuf
Protobuf优点优点:编码占空间少;编解码速度快;跨语言; 版本兼容性好;(在官网上描述ProtoBuf比XML小3到10倍,快20到100倍)缺点:二进制编码,可读性差;步骤:1. 写一个HelloWorld.proto,定义自己的类型;2. 调用protoc编译,生成相应的HelloWorld.pb.h和HelloWorld.pb.cc文件;3. #inclu...原创 2020-02-03 16:55:50 · 130 阅读 · 0 评论 -
Infiniband的网络通信API: IB verbs
一.什么是infinibandInfiniBand架构是一种支持多并发链接的“转换线缆”技术,它是新一代服务器硬件平台的I/O标准。由于它具有高带宽、低延时、 高可扩展性的特点,它非常适用于服务器与服务器(比如复制,分布式工作等),服务器和存储设备(比如SAN和直接存储附件)以及服务器和网络之间(比如LAN, WANs和the Internet)的通信 。二.Infiniband产生的原因...转载 2020-02-02 17:27:33 · 2986 阅读 · 0 评论 -
实测顺序访存VS随机访存,探究cache命中的作用有多大
结论1:一般CPU是64字节/cache行;所以顺序访存比随机访存快30倍,较为合理;结论2: 访存期间,CPU也是满的;#include <iostream>#include <stdlib.h>#include <stdio.h>#include <chrono>using namespace std::chrono;// ...原创 2020-02-02 00:16:22 · 544 阅读 · 0 评论 -
Mesos+Docker+Tensorflow集群解决方案
前言NVIDIA GPU 可以大大加快 Deep Learning 任务的运行速度;同时,GPU资源又是十分昂贵的,需要尽可能提高 GPU 资源的利用率。为了解决上述问题,我们利用Mesos将 GPU 资源汇聚成资源池来实现资源共享,并借用 Docker 交付深度学习的 runtime 环境,很好的解决了上述问题。该平台是基于清华大学的真实需求搭建的,从6月份开始已经为清华大学的师生提供服...转载 2020-01-28 21:52:31 · 351 阅读 · 1 评论 -
Docker入门(二)
Docker的依赖隔离:Docker比虚拟机好在哪里:1. 内存消耗:一个运行着CentOS的KVM虚拟机启动后,在不做优化的情况下,虚拟机自己就需要占用100~200 MB内存。2. 性能消耗:用户应用运行在虚拟机里面,它对宿主机操作系统的调用就不可避免地要经过虚拟化软件的拦截和处理,这本身又是一层性能损耗,尤其对计算资源、网络和磁盘I/O的损耗非常大。容器是一个“单进程”...原创 2020-01-28 21:11:03 · 163 阅读 · 0 评论 -
RAID0、RAID1、RAID5、RAID10
raid(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。raid就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。raid可以充分发 挥出多块硬盘的优势,可以提...转载 2019-12-15 18:58:04 · 405 阅读 · 0 评论 -
三种网络编程模型:忙等,select,epoll+线程池
网络编程模型(忙等,select,epoll) :A. 忙等:(没有新消息到来的时候,死循环耗费CPU)while true { for i in stream[] { if i has data read until unavailable }}B. select模型:(没新消息就block在select那里...原创 2019-11-24 08:49:07 · 360 阅读 · 0 评论 -
《App后台开发运维和架构实践》读书笔记 - Nginx (反向代理+负载均衡)
5.2 基本原理网络请求处理,使用高效的epoll;master进程只在一开始创建所有的worker进程,有请求就唤醒自己,将请求交给worker进程去做,然后继续沉睡;worker进程们实际干活儿;5.3 配置工作进程数;每个进程打开的文件描述符上限;每个worker进程的连接上限;sendfile:高效传输文件模式:从文件读到cache,不经过用户态buffer中...转载 2017-11-28 00:46:23 · 330 阅读 · 0 评论 -
每个计算机工程师都应该知道的数字列表(Jeff Dean)
L1 cache reference: 0.5 nsBranch mispredict: 5 nsL2 cache reference: 7 nsMutex lock/unlock: 100 nsMain memory reference: 100 nsCompress 1K bytes with Zippy: 10,000 nsSend 2K bytes over 1 G...原创 2019-11-20 17:17:33 · 291 阅读 · 0 评论 -
MXNet设计和实现简介(论文笔记)
MXNet论文_2015年Tensorflow慢一倍的原因:其使用的cuBLAS和cuDNN版本较低;MXNet最大的优点:节省内存/显存MXNet设计和实现简介 浅嵌入,命令式编程 深嵌入,声明式编程 如何执行 a=b+1 需要b已经被赋值。立即执行加法,将结果保存在a中。 返回对应的计算图(computation graph),我们可以之后对...转载 2019-11-14 17:08:24 · 441 阅读 · 0 评论 -
Docker入门
最为详细的Docker入门吐血总结Docker和VM的区别:Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。Docker的Client、Host(实际执行容器用的服务器)、Registry(镜像仓库)Docker容器的...转载 2019-11-02 20:23:32 · 156 阅读 · 0 评论 -
Mesos
深入浅出 Mesos(一):为软件定义数据中心而生的操作系统很优雅的两级调度架构开始说起。上图修改自 Apache Mesos 网站上的图片,如图所示,Mesos 实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是 Master 的守护进程,管理 Mesos 集群中所有节点上运行的 Slave 守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如 Had...转载 2019-10-31 17:50:24 · 426 阅读 · 0 评论 -
《App后台开发运维和架构实践》读书笔记 - Redis
7.1 Redis简介- <Key-Value>内存缓存- 可持久化到磁盘- 支持多种数据类型:string, hash, list, set, sorted set, bitmap, hyperloglog- Redis的所有操作都是原子操作;Redis支持几个操作合并后的原子性操作,即事务App端本身有一层缓存(网络不可用时威力大);后台用Redis做一层缓存;...转载 2017-12-09 23:08:49 · 240 阅读 · 0 评论 -
《App后台开发运维和架构实践》读书笔记 - MongoDB
8.1 优点:读写性能高;灵活的文档模型;水平扩展8.2 核心机制8.2.1 MMAP(内存文件映射):出去了"内存缓冲区"这么一个环节;文件映射到进程空间,访问的时候才会加载到物理内存;物理内存不够时,会导致Swap至磁盘,导致性能严重下降!每分钟/每5秒,把修改过的数据flush到磁盘上(这就是修改后当时看不到变化的原因!)8.2.2 Journal日志:两次f转载 2017-12-10 13:51:40 · 270 阅读 · 0 评论 -
Linux环境
1. 内存错误检测工具: valgrind2. 进程和代码的CPU使用情况分析工具:oprofile3. 程序内计时函数:clock_gettime,可精确到纳秒(10e-9秒),统计的是wall clock time; 不能用clock(统计的是CPU时钟周期数,IO等待时间不算)4. C++11中的原子操作数据类型: #include <atomic> atomic......原创 2016-11-03 20:40:09 · 539 阅读 · 0 评论 -
《App后台开发运维和架构实践》读书笔记 - 案例
第9章 案例9.1 聊天App移动互联网2个特性:1. 弱网络性:不稳定,经常断;App和服务器之间的长连接会经常断开,App没法主动通知服务器自己已断开,导致:1. 服务器资源占用; 2. 收发消息异常;这叫“TCP half-open”解决:App定时向服务器发心跳消息;服务器端检验超时,有3种方式:a. 服务器端按时扫描所有连接,发现超时的就主动关闭释放资源。缺点是扫描转载 2017-11-21 23:34:31 · 683 阅读 · 0 评论 -
《App后台开发运维和架构实践》读书笔记 - MySQL
6.1 基本架构连接/线程处理:连接处理,安全验证;核心层: 查询分析,优化,缓存,内置函数;视图,存储过程,触发器;存储引擎层:负责数据的存储与提取;通过存储引擎API访问底层存储,遮蔽了底层不同存储引擎的差异,底层差异化对上层而言是透明的;存储引擎之间互相不通信,只响应上层的查询;6.3 配置max_connections: MySQL同时允许会话数的上限;ma转载 2017-12-01 08:44:18 · 311 阅读 · 0 评论 -
《App后台开发运维和架构实践》读书笔记 - 概述
第一章 入门App和后台的沟通:常用HTTP协议, JSON格式;除非是手游和聊天这种延迟要求高的才需要TCP长连接;后台API可参考新浪微博,百度地图等开放平台的API格式;开发语言:不同的功能,可以用不同的语言,例如: PHP做网站,Golang/Erlang做推送服务器,Java做业务逻辑;第二章 基础技术2.2 设计API- 根据对象设计API,而不是根据UI来转载 2017-11-24 00:42:36 · 406 阅读 · 0 评论