Archive

Archive for March, 2011

smartctl获取raid卡下intel ssd寿命

March 14th, 2011 3 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: smartctl获取raid卡下intel ssd寿命

我们在线上用了大量的Intel ssd盘,总所周知的是ssd盘是有寿命的,在实际的使用中能够监控ssd盘是非常有帮助的。

我们通常是在raid卡下用intel ssd盘做10level的阵列,通常的工具很难读出它的寿命信息等。 经过intel和社区的努力,对intel ssd的寿命读取代码集成到了smartctl中去了, 这下我们方便了。

先交代下我们的环境:

硬件和操作系统:
System | Huawei Technologies Co., Ltd.; Tecal RH2285; vV100R001 (Main Server Chassis)
Release | Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel | 2.6.18-164.el5
Architecture | CPU = 64-bit, OS = 64-bit

raid卡控制器:
# RAID Controller ############################################
Controller | LSI Logic MegaRAID SAS
Model | MegaRAID SAS PCI Express(TM) ROMB, PCIE interface, 8 ports
Cache | 256MB Memory, BBU
BBU | 96% Charged, Temperature 23C, isSOHGood=

VirtualDev Size RAID Level Disks SpnDpth Stripe Status Cache
========== ========= ========== ===== ======= ====== ======= =========
0 0 (:-1-0) 0 Depth-1 WB, no RA
1 0 (:-5-3) 0 Depth-1 WB, no RA

PhysiclDev Type State Errors Vendor Model Size
========== ==== ======= ====== ======= ============ ===========
Hard Disk SAS Online, 0/0/0 SEAGATE ST3300657SS 279.396
Hard Disk SAS Online, 0/0/0 SEAGATE ST3300657SS 279.396
Solid Stat SATA Online, 0/901/0 CVPO007400S4160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO010400AR160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO007000T3160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO009002DN160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO0104017E160AGN INTEL 149.049
Solid Stat SATA Online, 0/899/0 CVPO010200KS160AGN INTEL 149.049

我们再来演示下如何使用:
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Linux下Fio和Blktrace模拟块设备的访问模式

March 12th, 2011 18 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Linux下Fio和Blktrace模拟块设备的访问模式

我们在做块设备调优的时候, 我们关心的是块设备是如何被访问的,也就是访问模式(比如说每次从什么地方读,每次读多少块,热点在哪里等),至于每次读写的什么数据我们并不关心. 这些模式当然可以自己去构造,但是如果能把真实应用的访问模式记录下来,并且在调优的时候能重放,我们就可以一遍又一遍的调试直到达到最佳的性能.

这个事情听起来貌似很麻烦,对吧? 幸运的是fio配合blktrace可以作这样的事情. 流程是blktrace负责录制真实应用对设备的访问模式, fio负责读入这些模式, 同时重放模拟对设备的访问.

背景资料:
blktrace使用可以参看这里
fio使用可以参看这里

在做演示前需要强调的是: 对设备的读写是模拟它的模式, 所以会破坏原来的数据,请谨慎, 我也是用虚拟的设备作演示的:

我们要演示的设备是 /dev/ram0, 设备大小128M:
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 工具介绍 Tags: , , ,

再谈systemtap在ubuntu 10.10下的安装

March 11th, 2011 7 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: 再谈systemtap在ubuntu 10.10下的安装

NinGoo的这篇文章写的很明白了:http://www.ningoo.net/html/2010/use_systemtap_on_ubuntu.html
原始出处:http://sourceware.org/systemtap/wiki/SystemtapOnUbuntu

安装的时候有几个地方需要注意:

在做步骤2的时候:
Read more…

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 工具介绍 Tags: , ,

iotop统计linux下per进程的IO活动

March 10th, 2011 3 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: iotop统计linux下per进程的IO活动

Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦.
当然如果你会systemtap, 或者blktrace这些事情难不到你, 但是没专用工具总不是很舒服的. 幸运的是Linux 2.6.20内核以后提供了基于每个进程的IO记账功能,所以就有了类似iotop这样方便的工具.

官网地址: http://guichaz.free.fr/iotop/

Iotop is a Python program with a top like UI used to show of behalf of which process is the I/O going on.

在RHEL6或者ubuntu下使用就非常简单, 我简单的演示下ubuntu10下使用:
安装先:
$ apt-get install iotop

直接运行就好:
$iotop

截图如下:

它还支持累加方式显示IO情况,挺方便的,具体参考man iotop

玩的开心.

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 工具介绍 Tags: ,

Linux下新系统调用sync_file_range

March 7th, 2011 4 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Linux下新系统调用sync_file_range

我们在做数据库程序或者IO密集型的程序的时候,通常在更新的时候,比如说数据库程序,希望更新有一定的安全性,我们会在更新操作结束的时候调用fsync或者fdatasync来flush数据到持久设备去。而且通常是以页面为单位,16K一次或者4K一次。 安全性保证了,但是性能就有很大的损害。而且我们更新的时候,通常是更新文件的某一个页面,那么由于是更新覆盖操作,对文件系统的元数据来讲的话,无需变更,所以我们通常不大关心元数据是否写入。 当更新非常频繁的时候,我们时候能够有其他方法减少性能损失。sync_file_range同学出场了。

Linux下系统调用sync_file_range只在内核2.6.17及更高版本是可用的, 我们常用的RHEL 5U4是支持的。
这篇文章有他的介绍: http://lwn.net/Articles/178199/
也可以man sync_file_range下他的具体作用, 但是请注意,sync_file_range是不可移植的。

sync_file_range – sync a file segment with disk

sync_file_range() permits fine control when synchronising the open file referred to by the file descriptor fd with disk.

offset is the starting byte of the file range to be synchronised. nbytes specifies the length of the range to be synchronised, in bytes; if nbytes is zero, then all bytes from offset through to the end of file are synchronised. Synchronisation is in units of the system page size: offset is rounded down to a page boundary; (offset+nbytes-1) is rounded up to a page boundary.

sync_file_range可以让我们在做多个更新后,一次性的刷数据,这样大大提高IO的性能。 具体的实现在fs/sync.c里面,有兴趣的同学可以围观下。

著名的fio测试工具支持sync_file_range来做sync操作,我们在决定在我们的应用中使用该syscall之前不妨先fio测试一把。

祝大家玩的开心。

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Linux, 调优 Tags: , , ,

itop更方便的了解Linux下中断情况

March 4th, 2011 3 comments

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: itop更方便的了解Linux下中断情况

乘着公司搬家的功夫,写点东西!

在作网络程序的时候, 经常需要了解interrupts和软中断的平衡情况, 需要知道每秒有多少中断发生,发生在哪个cpu上.
Linux下中断来源可以从 /proc/interrupts 中了解到:

$ cat /proc/interrupts 
           CPU0       CPU1       
  0:     247701     250313   IO-APIC-edge      timer
  1:        501        567   IO-APIC-edge      i8042
  3:          1          1   IO-APIC-edge    
  8:          1          0   IO-APIC-edge      rtc0
  9:        256        240   IO-APIC-fasteoi   acpi
 12:       1134       1149   IO-APIC-edge      i8042
 16:        629        554   IO-APIC-fasteoi   nvidia
 17:      21313      20869   IO-APIC-fasteoi   firewire_ohci, eth1
 18:          0          0   IO-APIC-fasteoi   mmc0
 19:      51822      50079   IO-APIC-fasteoi   ata_piix, ata_piix
 20:       5605       5255   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb6
 21:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4, uhci_hcd:usb7
 22:         33         33   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8
 45:        337        247   PCI-MSI-edge      eth0
 46:        441        447   PCI-MSI-edge      hda_intel
NMI:          0          0   Non-maskable interrupts
LOC:     169176     174899   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
PND:          0          0   Performance pending work
RES:      42289      40236   Rescheduling interrupts
CAL:        154       1076   Function call interrupts
TLB:       5838       5365   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:          5          5   Machine check polls
ERR:          1
MIS:          0

软中断可以从/proc/softirqs 了解到:

$ cat /proc/softirqs 
                CPU0       CPU1       
      HI:          0          0
   TIMER:     160508    1170976
  NET_TX:          2          2
  NET_RX:       3303       3165
   BLOCK:      50964      49198
BLOCK_IOPOLL:          0          0
 TASKLET:      24743      24284
   SCHED:      39483      41848
 HRTIMER:         34         40
     RCU:      92193      92592

总的中断次数可以从vmstat或者dstat了解到:

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 3  0      0  44160 327144 876600    0    0   894   584  458 2295 11  5 70 15

itop提供了更方便的方式了解,作者Hunz在源码里面写:

It’s quite simple but it does its job.

虽然简单,但是适用:

Ubutun下可以这样安装: apt-get install itop

$ itop
INT                NAME          RATE             MAX
  0 [PIC-edge      time]   628 Ints/s     (max:   628)
  1 [PIC-edge      i804]     4 Ints/s     (max:     4)
 17 [PIC-fasteoi   fire]     8 Ints/s     (max:    22)
 19 [PIC-fasteoi   ata_]     1 Ints/s     (max:    14)
 20 [PIC-fasteoi   ehci]    25 Ints/s     (max:    25)
 45 [MSI-edge      eth0]     1 Ints/s     (max:     1)

他会计算每秒每个中断源中断的次数,看起来比较方便.

祝玩的开心!

Post Footer automatically generated by wp-posturl plugin for wordpress.