- 博客(26)
- 资源 (41)
- 收藏
- 关注
转载 深入理解Hadoop集群和网络
本文将着重于讨论Hadoop集群的体系结构和方法,及它如何与网络和服务器基础设施的关系。最开始我们先学习一下Hadoop集群运作的基础原理。Hadoop里的服务器角色Hadoop主要的任务部署分为3个部分,分别是:Client机器,主节点和从节点。主节点主要负责Hadoop两个关键功能模块HDFS、Map Reduce的监督。当Job Tracker使用Map Reduce
2012-08-31 16:37:38 1028
原创 linux内存管理伙伴算法(一:基本概念介绍)
在系统初始化进行到伙伴系统分配器能够承担内存管理的责任后,必须停用bootmem分配器,毕竟不能同时用两个分配器管理内存。在UMA和NUMA系统上,停用分别由free_all_bootmem和free_all_bootmem_node完成(前面的博客已经详细讨论过)。伙伴系统基于一种相对简单而令人吃惊的强大算法,它结合了优秀内存分配器的两个关键特性:速度和效率。Linux内核中采用了一种同时适用于
2012-08-21 15:23:05 4898 1
原创 Linux内存管理中内存的组织及主要数据结构分析(pg_data_t&&page&&zone)
在讲解内核中用于组织内存的数据结构之前,考虑到术语不总是容易理解,所以先来看看几个概念。我们首先考虑NUMA系统,这样,在UMA系统上介绍这些概念就非常容易了。下图给出内存划分的图示:首先,内核划分为结点。每个结点关联到系统中的一个处理器,在内核中表示为pa_data_t的实例(稍后定义该数据结构)。各个结点又划分为内存域,是内存的进一步细分。例如,对可用于(ISA设备的)DMA操
2012-08-20 19:30:39 5191
原创 boot memory allocator——自举内存分配器(五:停用bootmem)
在系统初始化进行到伙伴系统分配器能够承担内存管理的责任后,必须停用bootmem分配器,毕竟不能同时用两个分配器管理内存。在UMA和NUMA系统上,停用分别由free_all_bootmem和free_all_bootmem_node完成。在伙伴系统建立以后,特定于体系结构的初始化代码需要调用这两个函数。本文还是选择讨论UMA系统。free_all_bootmem如下:unsigned
2012-08-17 15:10:40 2231 2
原创 boot memory allocator——自举内存分配器(四:内存释放)
在bootmem阶段,内核提供了free_bootmem函数来释放内存。它需要两个参数:需要释放的内存区的起始地址和长度。不出意外,NUMA系统上等价函数的名称为free_bootmem_node,它需要一个额外的参数来指定结点。void __init free_bootmem(unsigned long addr, unsigned long size){ free_bootmem_co
2012-08-16 22:55:09 2440
原创 boot memory allocator——自举内存分配器(三:内存分配)
内核提供了各种函数,用于在初始化期间分配内存。在UMA系统上有下列函数可用。alloc_bootmem(size)和alloc_boormem_pages(sizes)按指定大小在ZONE_NORMAL内存域分配内存。数据是对齐的,这使得内存或者从可适用于L1高速缓存的理想位置开始,或者从也边界开始。尽管alloc_boormem_pages(sizes)的名字暗示所需内存长度是以页为单位,但
2012-08-16 21:37:03 1830
原创 boot memory allocator——自举内存分配器(二:在IA-32系统下的初始化)
bootmem分配器的初始化时一个特定于体系结构的过程,此外还取决于所述计算机的内存布局,在IA-32系统下使用setup_memory,该函数又调用setup_bootmem_allocator来初始化bootmem分配器,如下所示的代码流程图说明了IA-32系统上初始化bootmem分配器涉及的各个步骤。static void __init setup_memory(void)
2012-08-16 15:04:31 2370
原创 boot memory allocator——自举内存分配器(一:基本介绍)
在启动过程期间,尽管内存管理尚未初始化,但内核仍然需要分配内存以创建各种数据结构。bootmem分配器用于在启动阶段早期分配内存。显然,对该分配器的需求集中于简单性方面,而不是性能和通用性。因此内核开发者决定实现一个最先适配(first-fit)分配器用于在启动阶段管理内存。这是可能想到的最简单的方式。该分配器使用一个位图来管理页,位图比特位的数目与系统中物理内存页的数目相同。比特位位1,
2012-08-16 10:12:06 3718
转载 LINUX设备驱动之设备模型五--device&driver&bus(三)
接上一篇文章,继续device_add()中的代码: error = bus_add_device(dev); if (error) goto BusError;在对应总线目录下的device目录下创建几个到device的链接文件。 error = dpm_sysfs_add(dev); if (err
2012-08-13 22:23:31 2345
转载 LINUX设备驱动之设备模型四--device&driver&bus(二)
接上一篇文章,在往总线注册注册设备前要先创建device,我们可以静态的定义device结构变量,然后调用device_register()将其注册,或者通过内核提供的device_create()接口函数创建和注册device。先看看device的数据结构定义:struct device { struct device *parent;
2012-08-13 22:21:28 1507
转载 LINUX设备驱动之设备模型三--device&driver&bus(一)
在清楚了kobject之后,就可以继续分析device、driver、bus了,这三者是设备驱动程序的基本数据结构。我们可以这样理解,内核用device来表示各种设备,然后用driver来表示它的驱动,而设备有很多种,也属于相同类型或不同类型,而其对应的驱动可能同时也是另外一个设备的驱动,为了管理这些设备和驱动,就引入了总线bus_type,总线上有两个集合(也可以理解为两
2012-08-13 22:19:23 1133
转载 LINUX设备驱动之设备模型二--kset
我们已经知道了kset内嵌了kobject来表示自身的节点,创建kset就要完成其内嵌kobject,注册kset时会产生一个事件,事件而最终会调用uevent_ops字段指向结构中的函数,这个事件是通过用户空间的hotplug程序处理。下面我们一步一步分析。内核同样提供了创建和注册kset的函数kset_create_and_add()struct kset *kset_create_a
2012-08-13 22:17:20 932
转载 LINUX设备驱动之设备模型一--kobject
LINUX设备驱动驱动程序模型的核心数据结构是kobject,kobject数据结构在\linux\kobject.h中定义:struct kobject { const char *name; struct list_head entry; struct kobject *parent;
2012-08-13 22:14:44 1130
转载 页面交换守护进程kswapd
从原理上说,kswapd相当于一个进程,它有自己的进程控制块task_struct结构。与其它进程一样受内核的调度。而正因为内核将它按进程来调度,就可以让它在系统相对空闲的时候来运行。不过,与普通进程相比,kswapd有其特殊性。首先,它没有自己独立的地址空间,所以在近代操作系统理论中把它称为“线程”以与进程相区别。那么,kswapd的地址空间是什么?实际上,内核空间就是它的地址空间。在这一点上,
2012-08-13 19:18:20 3474
转载 Linux 内存管理 -- 高端内存的映射方式
解释一: 高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射
2012-08-13 16:32:05 1382
原创 使用Filezilla在主机和虚拟机中传输文件
由于实验室里面有很多东西要在Linux下完成,但是本人暂时又离不开Windows,所以给自己装了一个XP+ubuntu的双系统。这样在ubuntu里面访问XP里面的文件很方便,但是两个系统的切换让人很是不爽,于是后来把双系统给费了,改成在XP里面运行虚拟机,在虚拟机里面安装ubuntu,这样一来在ubuntu中访问XP里面的文件又不爽了,开始的时候在网上查了一下可以在虚拟机里面设置一下,将XP里面
2012-08-09 14:52:46 15219 1
原创 远程登录
1.实验室的服务器上装了CentOs操作系统,在其上面安装一个ssh-server,命令如下: yum -y install openssh-server 然后运行ssh-server,命令如下: /etc/init.d/sshd start 就会显示ssh-server已经开始运行.2.我在自己的ubuntu上通过如下命令实现远程连接: ssh 192
2012-08-08 21:34:32 841
转载 Linux系统学习方法
首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux。是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少,这就造成了现在的状况:各大 linux论坛十分热闹,但我国linux瞬娜椿故分紧?到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥! 如果在论坛里来一次调
2012-08-08 15:46:38 1827
转载 linux CFQ IO调度算法分析笔记
CFQ调度器是四种IO Scheduler中最复杂的一个,redhat有个文档可以做为入门的文档先了解下 red-hat-enterprise-linux-5-io-tuning-guide.pdfThe cfq scheduler maintains a maximum of 64 internal request queues; each process running on th
2012-08-08 10:15:25 6999
转载 Linux Anticipatory (预测)I/O 调度算法分析笔记
as_add_request是调度算法的入口。AS和Deadline比较类似,都是先把request加入sector 排序的红黑树,然后再把requst加入fifo。只不过AS因为加入了预测,需要在加入requst时,调用as_update_rq来更新当前算法所维护的状态。此外,二者不同之处是,Deadline是以读写来区分request的方向,而AS是以是否同步来区分方向:data_dir =
2012-08-08 10:08:23 3240
转载 linux deadline I/O调度算法分析笔记
deadline算法的核心就是在传统的电梯算法中加入了请求超时的机制,该机制主要体现在两点:(1)请求超时时,对超时请求的选择。(2)没有请求超时时,当扫描完电梯最后一个request后,准备返回时,对第一个request的选择。基于以上两点,平衡了系统i/o吞吐量和响应时间。此外,该算法还考虑到了读操作对写操作造成的饥饿。算法核心数据结构:struct deadline_data {
2012-08-08 10:05:35 4267
原创 在ubuntu12.04中安装Hammerora-2.10测试mysql性能
最近这段时间实验室的黄博在研究将Linux IO Scheduler的四种调度算法应用在SSD中。(在ubuntu12.04中只有3种调度算法Noop、Deadline、Cfq) 他就给我分配了一个任务:通过测数据库的tmp值来反映底层IO的性能(我对这真心不清楚)。任务下来之后他就给了我一个TPC的官网,我看了好久也不知道怎么个测量方法,起初看到貌似还得自己写代码去实现测量都有点
2012-08-07 18:05:57 2958
原创 ubuntu中查看软件安装目录
dpkg -L 包名这里的包名是你用apt-get安装时的名称,不是文件名apt-get下载后软件所在路径是/var/cache/apt/archives
2012-08-07 10:22:04 963
原创 TPCC简介
TPCC值被广泛用于衡量C/S环境下,由服务器和客户端构筑的整体系统的性能,它由事物处理性能委员会(TPC,Transaction Processing Corp)制定,TPC为非赢利性国际组织。TPCC值可以反映出系统的性能价格比。TPCC测试系统每分钟处理的任务数,单位为tpm,(transactions per minute)。系统的总体价格(单位为美元)除以TPCC值,就可以衡量出
2012-08-06 17:00:34 3033
转载 ubuntu-E:Encountered a section with no Package: header的解决办法
刚才打开ubuntu,我的版本是12.04.正想使用sudo apt-get install build-essential 时,出现了如下错误:E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dis
2012-08-06 16:29:54 27477 2
原创 ubuntu12.04里面安装mysql
sudoapt-get installmysql-server sudoapt-get installmysql-workbench
2012-08-06 15:47:38 791
深度探索C++对象模型
2011-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人