Michael_Tong
近期目标:按时吃药,努力做个正常人。
摘要: HACK #21FUSE 本节将介绍使用用户进程的文件系统框架—FUSE。FUSE概要FUSE(Filesystem in Userspace,用户空间文件系统),是用来生成用户空间的一般进程的框架。使用FUSE,就可以以一般应用程序进程的形式生成独特的文件系统,与已有的文件系统同样进行挂载。从Li 阅读全文
posted @ 2018-03-12 23:35 Michael_Tong唐唐 阅读(406) 评论(0) 推荐(0) 编辑
摘要: HACK #19 ext4的调整 本节介绍可以从用户空间执行的ext4调整。ext4在sysfs中有一些关于调整的特殊文件(见表3-6)。使用这些特殊文件,就不用进行内核编译、重启,直接从用户空间确认、更改内核空间的设置参数。表3-6 sysfs中的ext4文件 /sys/fs/ext4/<设备名> 阅读全文
posted @ 2018-03-12 23:33 Michael_Tong唐唐 阅读(636) 评论(0) 推荐(0) 编辑
摘要: HACK #20 使用fio进行I/O的基准测试 本节介绍使用fio进行模拟各种情况的I/O基准测试的操作方法。I/O的基准测试中有无数需要考虑的因素。是I/O依次访问还是随机访问?是通过read/write的I/O?还是通过访问mmap的空间的I/O?是单一进程发出的I/O?还是多个进程同时发出的 阅读全文
posted @ 2018-03-12 23:33 Michael_Tong唐唐 阅读(295) 评论(0) 推荐(0) 编辑
摘要: HACK #18 向ext4转换 ext4可以与ext2/ext3在后台进行互换。这里将介绍从ext2/ext3转换的方法以及转换时的注意事项。转换有两种方法可以将ext2/ext3的磁盘映像作为ext4来使用。1.直接作为ext4挂接执行下列命令,就可以将ext2/ext3的磁盘映像/dev/sd 阅读全文
posted @ 2018-03-12 23:32 Michael_Tong唐唐 阅读(243) 评论(0) 推荐(0) 编辑
摘要: HACK #17 如何使用ext4 本节介绍ext4的编写和挂载方法、开发版ext4的使用方法。ext4是ext3的后续文件系统,从Linux 2.6.19开始使用。现在主要的发布版中多数都是采用ext4作为标准文件系统。除了间接参照块管理以外,ext4还以扩展形式支持块的管理,使其能够处理更大的文 阅读全文
posted @ 2018-03-12 23:31 Michael_Tong唐唐 阅读(247) 评论(0) 推荐(0) 编辑
摘要: HACK #16 OOM Killer的运行与结构(1) 本节介绍OOM Killer的运行与结构。 Linux中的Out Of Memory(OOM) Killer功能作为确保内存的最终手段,可以在耗尽系统内存或交换区后,向进程发送信号,强制终止该进程。 这个功能即使在无法释放内存的情况下,也能够 阅读全文
posted @ 2018-03-12 23:30 Michael_Tong唐唐 阅读(393) 评论(0) 推荐(0) 编辑
摘要: HACK #15 ramzswap 本节介绍将一部分内存作为交换设备使用的ramzswap。ramzswap是将一部分内存空间作为交换设备使用的基于RAM的块设备。对要换出(swapout)的页面进行压缩后,不是写入磁盘,而是写入内存。可以使用的内存仅为完成压缩的部分。压缩处理使用的是LZO注1。r 阅读全文
posted @ 2018-03-12 23:15 Michael_Tong唐唐 阅读(1014) 评论(0) 推荐(0) 编辑
摘要: HACK #14 虚拟存储子系统的调整 本节介绍如何使用/proc进行虚拟存储子系统的调整。虚拟空间存储方式在Linux上向应用程序分配内存时,是通过以页面为单位的虚拟存储方式进行的。采用虚拟存储方式,在实际操作中具有不需要确保连续的物理内存(不用担心内存碎片)的优点。最近的处理器大部分都具备用于虚 阅读全文
posted @ 2018-03-12 23:14 Michael_Tong唐唐 阅读(250) 评论(0) 推荐(0) 编辑
摘要: HACK #13 使用Block I/O控制器设置I/O优先级 本节介绍使用Block I/O控制器的功能设置I/O优先级的方法。Block I/O控制器可以将任意进程分组,并对该分组设置I/O的优先级。这个功能是在Linux 2.6.33时添加到Linux内核中的。例如,在前台进行一般处理的同时, 阅读全文
posted @ 2018-03-12 23:13 Michael_Tong唐唐 阅读(686) 评论(0) 推荐(0) 编辑
摘要: HACK #12 使用Memory Cgroup限制内存使用量 Memory Cgroup是Cgroup的资源限制功能之一,可以控制特定进程可以使用的内存量。Memory CgroupMemory Cgroup是Cgroup(参考Hack #7)之一,用来控制进程所使用的内存(LRU管理的缓存)数量 阅读全文
posted @ 2018-03-12 23:12 Michael_Tong唐唐 阅读(344) 评论(0) 推荐(0) 编辑
摘要: HACK #11cpuset 本节介绍控制物理CPU分配的cpuset。cpuset是Linux控制组(Cgroup)之一,其功能是指定特定进程或线程所使用的CPU组。另外,除CPU以外,同样还能指定内存节点的分配。以前的内核具有CPU affinity功能,该功能将线程分配给特定CPU。现在的内核 阅读全文
posted @ 2018-03-12 23:11 Michael_Tong唐唐 阅读(1511) 评论(0) 推荐(0) 编辑
摘要: HACK #9 RT Group Scheduling 与RT Throttling 本节介绍对实时进程所使用的CPU时间进行限制的功能RT Group Scheduling和RT Throttling。RT Group Scheduling和RT Throttling功能是用来限制使用实时调度策略 阅读全文
posted @ 2018-03-12 23:10 Michael_Tong唐唐 阅读(357) 评论(0) 推荐(0) 编辑
摘要: HACK #10 Fair Group Scheduling 本节介绍Cgroup之一、管理CPU资源的Fair Group Scheduling。Fair Group SchedulingFair Group Scheduling是Cgroup的资源管理之一,用来控制Linux内核的进程调度程序进 阅读全文
posted @ 2018-03-12 23:10 Michael_Tong唐唐 阅读(157) 评论(0) 推荐(0) 编辑
摘要: HACK #8 调度策略 本节介绍Linux的调度策略(scheduling policy)。Linux调度策略的类别大致可以分为TSS(Time Sharing System,分时系统)和实时系统这两种。一方面,一般的进程是通过分时运行的。也就是说,使用CPU的时间达到分配给进程的时间(时间片)时 阅读全文
posted @ 2018-03-12 23:09 Michael_Tong唐唐 阅读(397) 评论(0) 推荐(0) 编辑
摘要: HACK #6 使用localmodconfig缩短编译时间 本节介绍使用make localmodconfig生成精简的.config文件,缩短内核编译时间的方法。为了能够应对各种各样的环境,发布版的内核包含很多内核模块。但是在某个特定机器,例如,大家自己平时使用的PC上实际用到的模块只是其中的极 阅读全文
posted @ 2018-03-12 23:08 Michael_Tong唐唐 阅读(727) 评论(0) 推荐(0) 编辑
摘要: HACK #7 Cgroup、Namespace、Linux容器 本节将介绍Cgroup与Namespace以及通过这两个功能实现的容器功能。CgroupCgroup(control group)是将任意进程进行分组化管理的Linux内核功能。Cgroup本身是提供将进程进行分组化管理的功能和接口的 阅读全文
posted @ 2018-03-12 23:08 Michael_Tong唐唐 阅读(313) 评论(0) 推荐(0) 编辑
摘要: HACK #5 使用checkpatch.pl检查补丁的格式 本节介绍发布前检查补丁格式的方法。Linux内核是由多个开发者进行开发的。因此,为了保持补丁评估与源代码的可读性,按照统一的规则进行编写是非常重要的。编写规则写在Linux内核源代码的Documentation/CodingStyle中。 阅读全文
posted @ 2018-03-12 23:06 Michael_Tong唐唐 阅读(751) 评论(0) 推荐(0) 编辑
摘要: HACK #4 如何使用Git 本节介绍Git的使用方法。Git是Linux内核等众多OSS(Open Source Software,开源软件)开发中所使用的SCM(Source Code Management,源码管理)系统。在2005年以前,在Linux内核开发中一直使用一个叫做BitKeep 阅读全文
posted @ 2018-03-12 23:05 Michael_Tong唐唐 阅读(369) 评论(0) 推荐(0) 编辑
摘要: HACK #3 如何编写内核模块 本节将介绍向Linux内核中动态添加功能的结构—内核模块的编写方法。内核模块Linux内核是单内核(monolithic kernel),也就是所有的内核功能都集成在一个内核空间内。但是内核具有模块功能,可以将磁盘驱动程序、文件系统等独立的内核功能制作成模块,并动态 阅读全文
posted @ 2018-03-12 23:00 Michael_Tong唐唐 阅读(336) 评论(0) 推荐(0) 编辑
摘要: HACK #2 如何编译Linux内核 本节介绍编译Linux内核的方法。当发现bug而修改源代码或者添加新功能时,就需要对内核进行重新编译,生成二进制映像文件。另外,如果想要使用发布版内核中无效的功能或者驱动程序时,或者相反地,想要删除不需要的功能从而使内核更精简、更快时,或者想使用最新版的上游内 阅读全文
posted @ 2018-03-12 22:56 Michael_Tong唐唐 阅读(324) 评论(0) 推荐(0) 编辑