在Arduino IDE中添加ESP8266支持

nodemcu模块竟然不到20块,比arduino nano还便宜,而且还多了wifi功能,没理由不用啊。这货也能用ardunio IDE开发环境,esp8266对arduino IDE版本有要求,最好装高版本,我用的是1.8.2, 另外用IDE下菜单Tools > Board Manager来安装装不了估计是被墙了,用git版本,来看下具体添加方法。...

阅读全文

解决kmalloc分配失败的问题

最近遇到一个kmalloc内存分配失败的问题,是刚刷完手机第一次开机很大概率出现,重启后就好了,Android7.0/ARM64/kernel3.18。 01-09 04:55:23.878 0 0 W Thread-2: page allocation failure: order:4, mode:0xc0d0 ord...

阅读全文

Linux内存回收Overview

内核版本3.18, 内存回收和内存分配连在一起的, 了解下: what is order in mm: mel gorman’s book: the allocator maintains blocks of free pages where each block is a power of two number of pages. The exponen...

阅读全文

如何给内核提交补丁

提交过程step1: get the right branch 可以参考 MAINTAINERS文件,可能不对,直接看git.kernel.org, 注意git pull到最新 step2: generate one patch git format-patch -1 commit_id cover-letter给一次提交多个用 step3: check p...

阅读全文

Ubuntu下git send-email的使用

家里的nas/linaro上装个发内核补丁环境, rpi远程。 Can't locate Net/SMTP/SSL.pm in @INC 要安装下面这个包 sudo apt-get install libnet-smtp-ssl-perl 安装完后有下面这个错误 Send this email? ([y]es|[n]o|[q]uit|...

阅读全文

kswapd唤醒分析

kswapd is a background pageout daemon,回收内存。 唤醒的接口是 wake_all_kswapd/wakeup_kswapd,lets check. /* * This is the 'heart' of the zoned buddy allocator. */struct page *__...

阅读全文

理解Linux VM pressure

原生Linux内核是把vmpressure和CONFIG_MEMCG绑定的,是给用户态用的。 makefile里写的很清楚: obj-$(CONFIG_MEMCG) += memcontrol.o page_cgroup.o vmpressure.o 内核文档也放到了cgroup下memory.txt: Memory Pressure The pre...

阅读全文

zone水位阈值代码分析

内核zone里有个水位的概念,根据这个水位判断内存压力,从而进行内存回收,版本3.18。 struct zone { /* Read-mostly fields */ /* zone watermarks, access with *_wmark_pages(zone) macros */ unsigned long watermark[NR_WM...

阅读全文

Linux内存模型分析

kernel版本是3.18,先看下内存描述几个概念。 zone 概念NUMA全称Non-Uniform Memory Access,主要说的是cpu访问memory bank依赖他们之间的距离成本问题。 memory被划分成bank,每一个bank叫做node,每一个node被分成很多块叫zones, node用pglist_data表示, zone里包含p...

阅读全文

Settings.apk显示剩余内存代码分析

一般Linux内核统计剩余内存都是meminfo的MemFree+Cached, maybe + Buffers, 如下: xxxx:/ # cat /proc/meminfoMemTotal: 1883144 kBMemFree: 66536 kBMemAvailable: 724464 kBBuffers: ...

阅读全文