Linux Kernel

阿里云“网红"运维工程师白金:做一个平凡的圆梦人

橙三吉。 提交于 2019-12-03 02:47:57
他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名“辟拾(P10)”; 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路; 他爱好清奇,练就了能在 20 秒内从20000个像素块里找出不同颜色像素的“特异功能”; 他乐观豁达,一言不合就讲段子的性格让他成为身边同事的“开心果”; 临近不惑之年的他,经历过很多故事,但他在用自己的行动向这个世界诠释着什么是 IT 工程师告别平庸的“不惑生活”。 在阿里云视频云团队的一次集体活动上,有一个工程师的“特殊才艺”引起了所有人的关注。在一个由 20000 个像素块组成的左右两块魔方墙上,他用不到 1 分钟的时间就找出了唯一颜色不同的两个色块,被众同事封神“最强大脑”。他就是来自阿里云视频云团队的一名运维工程师-白金(花名:辟拾)。 一起感受一下白金肉眼找不同的那块像素魔方墙…… 『阿里云 CDN 高级运维专家,15 年以上Linux系统和网络经验,8 年以上 CDN 经验,5 年 Linux Kernel 开发经验。拥有 5 篇技术专利,对 CDN 架构及核心技术、TCP 优化有深入研究,擅长逆向分析,对性能调优、故障排错、网络异常诊断、网络攻防对抗有丰富的经验及浓厚兴趣。』 这是白金在江湖中的官方介绍,但他本人却认为这不足以介绍真正的他,就像关于被大家膜拜的“特异功能”,白金也有不同的看法:

Linux kernel脉络和主干总结

雨燕双飞 提交于 2019-12-02 05:40:30
写在前面 前人常说,对Linux操作系统/内核的理解,是计算机行业从业者的内功,决定了你在技术领域想走多远。但内核的庞大以及学习曲线之陡峭,总让我在学习途中觉得犹如“管中窥豹”。 随着工作的深入,越来越觉得系统性学习内核框架、整理出脉络的必要性。个人认为,通过看书/文章学习内核,不能太沉迷于细节。因为细节和执行步骤不去写代码是难以掌握的,看过之后,也很快忘掉。并且,太多的细节会让学习曲线更加陡峭、难见全貌。所以我试图整理出一系列的文章,来源包括不仅限于大牛的公开课、经典书籍、源码等,根据内核的框架脉络,整理出一些“常识”性的知识点,让从事云计算领域的工程师们觉得够用,并且是能“刻在脑子里的”。 此外,在容器领域涉及到cgroups\namespaces\unionfs 等基础技术,需要更深入学习、掌握。所以,除了“常识”的总结,会多一些实战和细节以加深理解,达到“知其所以然”的效果。 最后,学习这些的目的,为了更好的理解容器的底层技术。今后工作中处理问题时,可以挖掘到问题本质,而不只是停留在技术表面。 本系列会围绕 “进程管理”、“内存管理”、“IO栈”、”网络栈“ 四大脉络,总结Linux kernel的一些常识知识。对于技术,个人认为只有保持开放的心态,才能促使自己不断进步。由于本人水平有限,希望可以在各位批评指点下,不断改进内容,还望不吝赐教。 http://kernel

Android Camera 调用流程总结

孤者浪人 提交于 2019-11-28 09:52:35
1.总体介绍 Android Camera框架从整体上看是一个client/service架构。有两个进程,一个是client进程,可以看成AP端 ,主要包括Java代码和一些native层的c/c++代码;另一个是service进程,属于服务端,是native c/c++代码, 主要负责和linux kernel中的camera driver交互,搜集linux kernel中driver层传上来的数据,并交给显示系统(surface)显示。client 和 service 进程通过Binder机制进行通信,client端通过调用service端的接口实现各个具体的功能。 对于preview数据不会通过Binder机制从service端copy 到client端,但会通过回调函数与消息机制将preview数据的buffer地址传到client端,最终可在Java ap中操作处理preview数据。 2.调用层次划分 Package -> Framework -> JNI ->Camera.cpp -- (binder) ->CameraService ->Camera HAL -> Qcom ->Camera Driver client端: Package 中的 camera.java 调用Framework中的 camera.java(framework/base/core

总结:为什么要限制最大连接数?

隐身守侯 提交于 2019-11-27 20:21:39
一个tcp连接需要:1,socket文件描述符;2,IP地址;3,端口;4,内存 原因: 建立连接需要消耗资源,详情查看: https://blog.csdn.net/qj4522/article/details/84892762 https://blog.csdn.net/solstice/article/details/6579232 1、内存资源 tcp连接归根结底需要双方接收和发送数据,那么就需要一个读缓冲区和写缓冲区,这两个buffer在linux下最小为4096字节,可通过cat /proc/sys/net/ipv4/tcp_rmem和cat /proc/sys/net/ipv4/tcp_wmem来查看。 所以,一个tcp连接最小占用内存为4096+4096 = 8k ,那么对于一个8G内存的机器,在不考虑其他限制下,最多支持的并发量为:8 1024 1024/8 约等于100万。此数字为纯理论上限数值,在实际中,由于linux kernel对一些资源的限制,加上程序的业务处理,所以,8G内存是很难达到100万连接的,当然,我们也可以通过增加内存的方式增加并发量 2、CPU资源 来源: oschina 链接: https://my.oschina.net/u/2244961/blog/3075471

Android系统架构-----Android的系统体系架构

南笙酒味 提交于 2019-11-26 19:58:02
一、Android的系统体系结构 在入门了一个简单的Android的Hello World以后,我们首先来看一下我们Android的整体系统架构图: 这个就是我们Android的整体系统架构图了,我们首先从整体上来看看Android的体系结构。 Linux Kernel:我们知道Android其实就是一个操作系统,其底层是基于Linux Kernel的,这一层主要完成的是操作系统所具有的功能,比如这一层有许多的驱动程序,正是通过这些驱动程序来驱动我们设备上的硬件设备的。 Android Runtime:Android的运行环境,我们学过java的都知道,java程序的运行需要java的核心包的支持,然后通过JVM虚拟机来运行我们的应用程序,这里Android Runtime里的Core Libraries就相当于java的JDK,是运行android应用程序所需要的核心库,Dalvik Virtual Machine就相当于JVM,这时Google专为Android开发的运行android应用程序所需的虚拟机。 Liberaries:这里面都是Android的库文件,例如我们访问SQLite数据库的库文件等等。 Application Framework:应用程序的框架,这个是非常的重要的,相信Framework这个词大家都应该非常的熟悉了