12 龙虾天天

尚未进行身份认证

未来看现在,是否无遗憾

等级
TA的排名 2w+

SAN和NAS路径图

SAN路径图NAS路径图

2019-09-05 16:19:30

kmalloc/kfree,vmalloc/vfree函数用法和区别

1 kmallockmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。2 kamlloc函数原型#include<linux/slab.h>void *kmalloc(size_t size, int flags);(1)第...

2019-08-14 11:32:24

Linux 的 NUMA 技术

一、引言随着科学计算、事务处理对计算机性能要求的不断提高,SMP(对称多处理器)系统的应用越来越广泛,规模也越来越大,但由于传统的SMP系统中,所有处理器都共享系统总线,因此当处理器的数目增大时,系统总线的竞争冲突加大,系统总线将成为瓶颈,所以目前SMP系统的CPU数目一般只有数十个,可扩展能力受到极大限制。NUMA技术有效结合了SMP系统易编程性和MPP(大规模并行)系统易扩展性的特点,较好解...

2019-08-13 17:08:44

Linux Slab分配器--概述

slab分配器是Linux内存管理中非常重要和复杂的一部分,其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当...

2019-08-12 11:35:51

Linux内存管理中的slab分配器

Linux内核中基于伙伴算法实现的分区页框分配器适合大块内存的请求,它所分配的内存区是以页框为基本单位的。对于内核中小块连续内存的请求,比如说几个字节或者几百个字节,如果依然分配一个页框来来满足该请求,那么这很明显就是一种浪费,即产生内部碎片(internal fragmentation)为了解决小块内存的分配,Linux内核基于Solaris 2.4中的slab分配算法实现了自己的slab分配...

2019-08-12 11:07:54

解读关键字volatile

1 volatile是什么?volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。2 编译器优化是什么意思?int i = 5;int a = i;……int b = i;编译器发现两次从i读数据的代码...

2019-08-09 16:47:42

动态分级存储特性-SmartTier

1简介SmartTier动态分级存储特性提供智能化数据存储管理的功能,通过统计和分析数据的活跃度,将不同活跃度的数据和不同特点的存储介质动态匹配,提高存储系统性能并降低用户成本。应用SmartTier特性不会中断现有业务,不会影响数据读写。SmartTier SmartTier通过数据迁移将活跃度高的繁忙数据迁移至具有更高性能的存储介质(如SSD硬盘),将活跃度低的空闲数据迁移至具有更高容量且更...

2019-08-01 20:16:19

正则表达式标记

正则表达式标记属于正则的扩展表示法,格式:(?iLmsx)各个字符的含义是:i:不区分大小写的匹配L:根据所使用的本地语言环境通过\w、\W、\b、\B、\s、\S实现匹配s:使点号(.)可以匹配\nm:能够在目标字符串实现跨行都说,而不必将整个字符串视为单个实体x:该标记允许用户通过抑制在正则表达式中使用空白符(除了在字符类中或者发斜线转义中)来创建更易读的正则表达式举例:参...

2019-07-06 15:53:19

python re模块的findall和finditer

python正则模块re中findall和finditer两者相似,但却有很大区别。两者都可以获取所有的匹配结果,这和search方法有着很大的区别,同时不同的是一个返回list,一个返回一个MatchObject类型的iteratorcontent='''email:12345678@163.comemail:2345678@163.comemail:345678@163.com'...

2019-07-05 17:42:53

正则表达式(括号)、[中括号]、{大括号}的区别小结

正则表达式的()[]{}有不同的意思。()是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。(\s*)表示连续空格的字符串。[]是定义匹配的字符范围。比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。{}一般用来表示匹配的长度,比如\s{3}表示匹配三个空格,\s{1,3}表示匹配一到三个空格。(0-9)匹配...

2019-07-05 17:17:09

python正则表达式中group

1 正则表达式中的(…)用于匹配括号内的任何正则表达式,并且指明组的开始和结束位置;可以在执行匹配之后检索组中的内容,并且可以在可以在字符串中使用\number来进行进一步的匹配,如下所述。当需要匹配字符’(‘或者’)’时,可以使用(和) ,或者[(]和[)]来实现。以上便是Python3.6官方文档对于(…)表达式的解说,该括号表达式用于定义一个group,一个正则表达式中可以有多个括号表达...

2019-07-05 14:41:35

python字符串处理

str = ‘0123456789’print str[0:3] #截取第一位到第三位的字符print str[:] #截取字符串的全部字符print str[6:] #截取第七个字符到结尾print str[:-3] #截取从头开始到倒数第三个字符之前print str[2] #截取第三个字符print str[-1] #截取倒数第一个字符print s...

2019-07-05 09:04:08

怎样用 parted 管理硬盘分区

众所周知,对硬盘分区是 Linux 管理员一项最重要的管理任务之一,他们不能不知道这个。你可能会问为什么我们要用 parted 而不是fdisk? 它们有什么区别?好问题,我会告诉你这两者的区别。parted 支持用户在大于 2TB 的硬盘上创建硬盘分区, 但fdisk 命令不支持对比 fdisk 来说,parted 是一个更高级的工具支持更多的分区表类型,包括 GPT (全局唯一标识分...

2019-06-20 23:24:05

parted分区和挂载及非交互式操作

交互式分区1 将磁盘上原有的分区删除进入:#parted /dev/sdb查看:(parted)p删除:(parted)rm 1 (parted)rm 22 将磁盘格式变成gpt的格式(part只能针对gpt格式的磁盘进行操作) 转换:(parted) mklabel gpt 分区:(parted) mkpart primary 1 500 ...

2019-06-18 15:10:30

硬盘的读写原理

硬盘的种类主要是SCSI、IDE、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如SCSI标准已经经历了SCSI-1、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的Ultral-160就是基于SCSI-3标准的;IDE遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本;IDE是并口设备,而SATA...

2019-06-03 20:15:19

存储快照实现原理

存储快照有两种实现方式:COW(写时复制Copy-On-Write)、ROW(写重定向Redirect-On-Write),两种实现方法有区别,造成读写性能、应用场景有比较大的区别。1 COW原理见下图(从网上找的,没自己画)。1)原卷数据是A~G。此卷Metedata像指针一样指向这些数据。2)当做快照时,重新复制一份Metedata,并且也指向这些A~G数据。3)当有数据要写入到源卷...

2019-06-03 15:32:08

Linux中的线程局部存储

在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程序的性能会得到一定的提高。那么对于那些系统不支持原子操作的自定义数据类型,在不使用锁的情况下如何做到线程安全呢?本文将从线程局部存储方面,简单...

2019-05-28 14:49:59

Linux下原生异步IO接口libaio介绍

在调研 fio的实现时,接触了libaio的使用方式。由于fio 的io engine发送及接受数据的流程是按照liaio库的方式进行的。所以初步使用了libaio。现总结如下。几点说明本文的重点在于libaio的使用方式。所以对什么是同步、异步及阻塞、非阻塞IO,请参考相应资料。比较权威的资料是Richard Stevens的“UNIXNetwork Programming Volume...

2019-05-07 13:50:02

Linux下libaio的一个简单例子

libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。首先推荐两个介绍Linux I/O模型的页面,写的很好:http://www.ibm.com/developerworks/cn/linux/l-async/http://www.iteye.com/topic/868702对于libaio的读写过程简单说来就是你发出一个读写请求,然后...

2019-05-07 11:40:31

LVM(逻辑卷管理器)的条带化

1 什么是条带化当多个进程同时访问一个磁盘时,可能会出现磁盘冲突。磁盘系统对访问次数(每秒的IO操作,IOPS)和数据传输速率(读写速率,TPS)有限制。当达到这些限制时,后面需要访问磁盘的进程就需要挂起等待,这就是磁盘冲突。避免磁盘冲突是优化I/O性能的一个重要目标。条带化技术是一种自动的将I/0负载均衡到多个物理磁盘上的技术。条带化技术将一块连续的数据分成很多小部分,并把他们分别存储到不同...

2019-04-25 20:29:25

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。