Ron
versions

D状态进程

进程是计算机科学中最深刻、最成功的抽象概念之一,进程是运行中的一个程序示例,作为计算机运行的主体,理解并把控进程的状态可谓是至关重要。 从用户的角度来看,运行一个程序之后,可以认为进程的状态大致可以分为运行中、挂起两大类,而导致被挂起的原因又可分为多种: 被动挂起:进程需要等待某种资源被内核挂起(如磁盘IO、网络IO、阻塞锁)。 主动挂起:用户通过系统调用sleep挂起一定时间、...

coroutine

OpenResty用户协程

OpenResty中提供的定时器接口ngx.timer,底层是创建了一个协程,可以异步并发的处理一些业务,在一些请求网络资源的场景下,可以利用并发来达到加速的效果。 协程特点 Lua是一个极其精简、高性能的脚本语言。它的协程是非抢占式的,不像golang中协程的调度模型(多线程抢占式),只有当前协程主动放弃执行权(yield),其他协程才有机会得到执行(consume)。OpenResty...

rice fields of Conghua

内核kswapd进程分析

在第一篇博客记录了Unix Domain Socket的使用以及遇到的问题,文章的最后遗留了一个问题:使用UDP模式下,当操作系统内存处于较低水准时,send发送大块内存经常失败,返回错误:no buffer space available。除此之外,最近在线上服务器的高峰期,偶尔有记录到kswapd0/1这两个内核进程长时间运行,占用了相当一部分CPU和磁盘资源。 很显然,上面这两个问题...

PP美照

OpenResty介绍及架构思考

开启第一篇关于OpenResty的记录,关于Openresty的介绍及入门见这里:OpenRest最佳实践。 前置知识 1.事件驱动架构(Event-driven architecture) 事件驱动架构是一种优秀的软件(系统)设计模式,以事件为核心驱动整个系统的运转。事件驱动架构通常包括事件分发者、生产者、消费者。事件消费者在事件分发者注册自己感兴趣的事件,生产者产生事件给分发者...