Linux性能优化实战之IO性能篇

  实际上,性能优化一直都是大多数软件工程师头上的紧箍咒,甚至许多工作多年的资深工程师,有时也无法准确地分析出线上的很多性能问题。
  性能分析问题为什么这么难呢?性能优化是个系统工具,常常牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都可能出现问题,甚至多个组件同时出现问题。毫无疑问,性能优化是软件系统中最有挑战的工作指引,也是最考验体现你综合能力的工作之一。该篇blog记录总结了倪朋飞老师在极客时间开设的[《Linux性能优化实战》][1]课程笔记。

Linux性能优化实战之CPU性能篇

  实际上,性能优化一直都是大多数软件工程师头上的紧箍咒,甚至许多工作多年的资深工程师,有时也无法准确地分析出线上的很多性能问题。
  性能分析问题为什么这么难呢?性能优化是个系统工具,常常牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都可能出现问题,甚至多个组件同时出现问题。毫无疑问,性能优化是软件系统中最有挑战的工作指引,也是最考验体现你综合能力的工作之一。该篇blog记录总结了倪朋飞老师在极客时间开设的《Linux性能优化实战》课程笔记。

Linux性能优化实战之网络性能篇

  实际上,性能优化一直都是大多数软件工程师头上的紧箍咒,甚至许多工作多年的资深工程师,有时也无法准确地分析出线上的很多性能问题。
  性能分析问题为什么这么难呢?性能优化是个系统工具,常常牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都可能出现问题,甚至多个组件同时出现问题。毫无疑问,性能优化是软件系统中最有挑战的工作指引,也是最考验体现你综合能力的工作之一。该篇blog记录总结了倪朋飞老师在极客时间开设的[《Linux性能优化实战》][1]课程笔记。

Linux性能优化实战之内存性能篇

  实际上,性能优化一直都是大多数软件工程师头上的紧箍咒,甚至许多工作多年的资深工程师,有时也无法准确地分析出线上的很多性能问题。
  性能分析问题为什么这么难呢?性能优化是个系统工具,常常牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都可能出现问题,甚至多个组件同时出现问题。毫无疑问,性能优化是软件系统中最有挑战的工作指引,也是最考验体现你综合能力的工作之一。该篇blog记录总结了倪朋飞老师在极客时间开设的《Linux性能优化实战》课程笔记。

Linux性能优化实战

  实际上,性能优化一直都是大多数软件工程师头上的紧箍咒,甚至许多工作多年的资深工程师,有时也无法准确地分析出线上的很多性能问题。
  性能分析问题为什么这么难呢?性能优化是个系统工具,常常牵一发而动全身。它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面。每一个组件都可能出现问题,甚至多个组件同时出现问题。毫无疑问,性能优化是软件系统中最有挑战的工作指引,也是最考验体现你综合能力的工作之一。该篇blog记录总结了倪朋飞老师在极客时间开设的《Linux性能优化实战》课程笔记。

PyTorch中的量化总结

背景:
在深度学习中,量化指的是使用更少的bit来存储原本以浮点数存储的tensor,以及使用更少的bit来完成原本以浮点数完成的计算。这么做的好处主要有如下几点:

  • 更少的模型体积,接近4倍的减少;
  • 可以更快的计算,由于更少的内存访问和更快的int8计算,可以快2~4倍。
    一个量化后的模型,其部分或者全部的tensor操作会使用int类型来计算,而不是使用量化之前的float类型。当然,量化还需要底层硬件支持,x86 CPU(支持AVX2)、ARM CPU、Google TPU、Nvidia Volta/Turing/Ampere、Qualcomm DSP这些主流硬件都对量化提供了支持。

容器、docker、虚拟机

容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。

容器和虚拟机具有相似的资源隔离和分配方式,容器虚拟化了操作系统而不是硬件,更加便携和高效。

Linux IO原理解析和zero-copy技术揭秘

"linux-zero-copy"

原文链接:https://strikefreedom.top/linux-io-and-zero-copy

早就想写篇关于介绍IO操作的技术总结,直到今天看到这篇文章介绍的如此逻辑清晰,也把自己之前掌握的知识串了起来,读完收获颇多。这里就做个搬运工,原文请参见上面链接。
如今的网络应用早已从 CPU 密集型转向了 I/O 密集型,网络服务器大多是基于 C-S 模型,也即 客户端 - 服务端 模型,客户端需要和服务端进行大量的网络通信,这也决定了现代网络应用的性能瓶颈:I/O。

OpenMP 总结

本文档尝试快速介绍 OpenMP(如版本 4.5),这是一个简单的 C/C++/Fortran 编译器扩展 C++,它允许在现有源代码中添加并行性,而无需重写它。