2013-10-30

CentOS - Oracle 11gR2 - HugePages


Oracle이 잦은 swapping으로 성능 저하가 나는 경우가 있다.
주로 메모리 요구량이 많거나 또는 기본 4K pool이 모자라서 발생한다.

일반적으로 16GB 이상을 Oracle에 할당하면 발생하기 시작한다.
RHEL/CentOS 에서는 HugePages 라는 2M 혹은 4M 크기로 할당하여 회피할 수 있다.
또한 HugePage로 할당된 메모리는 swap되지 않고 메모리에 있는다.

1. Oracle 에 할당할 메모리크기 확인

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show parameter target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 0
memory_target                        big integer 0
parallel_servers_target              integer     16
pga_aggregate_target                 big integer 180M
sga_target                           big integer 600M
SQL>
[oracle@ora11 ~/scripts]$ ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x3b5a955c 5013505    oracle    660        631242752  22
 600+M 정도 필요하다.

2. Oracle 수행 계정에서 900M 까지(600M이상) 사용할 수 있게 준비


[root@ora11 ~]# tail -2 /etc/security/limits.conf
oracle soft memlock 921600
oracle hard memlock 921600
 확인
[root@ora11 ~]# su - oracle -c "ulimit -l"
921600
혹은
[oracle@ora11 ~/scripts]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16037
max locked memory       (kbytes, -l) 921600
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 16037
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[oracle@ora11 ~/scripts]$

수행 계정의 그룹정보를 확인
[oracle@ora11 ~/scripts]$ id -a
uid=500(oracle) gid=500(dba) groups=500(dba)
[oracle@ora11 ~/scripts]$ grep dba /etc/group
dba:x:500:dmadmin

3. 준비할 HugePage 블럭 계산


[oracle@ora11 ~/scripts]$ grep Hugepagesize /proc/meminfo
Hugepagesize:     2048 kB
 2M 단위로 할당 중임, 600M / 2M = 300 개 필요, 넉넉하게 400개 지정
group id 는 500
[root@ora11 ~]# tail -2 /etc/sysctl.conf
vm.nr_hugepages = 400
vm.hugetlb_shm_group = 500

4. 커널 값 적용


리부팅 혹은
[root@ora11 ~]# sysctl -w vm.nr_hugepages=400
vm.nr_hugepages = 400
[root@ora11 ~]# sysctl -w vm.hugetlb_shm_group=500
vm.hugetlb_shm_group = 500
[root@ora11 ~]#

5. Oracle 재시작 후 확인


HugePage 적용시
[oracle@ora11 ~/scripts]$ egrep -e Mem -e Page -e Huge /proc/meminfo
MemTotal:      2056548 kB
MemFree:        674696 kB
AnonPages:       69968 kB
PageTables:      11384 kBHugePages_Total:   500
HugePages_Free:    199

HugePages_Rsvd:      0
Hugepagesize:     2048 kB
 미 적용시

[oracle@ora11 ~/scripts]$ egrep -e Mem -e Page -e Huge /proc/meminfo
MemTotal:      2056548 kB
MemFree:       1055076 kB
AnonPages:       71488 kB
PageTables:      37716 kB
HugePages_Total:     0
HugePages_Free:      0

HugePages_Rsvd:      0
Hugepagesize:     2048 kB
 HugePage 사용시 메모리 할당 갯수가 줄어들어 관리용 PageTable도 줄어드는 것 확인됨


기타.

가용한 HugePage가 모자라면 Oracle 기동 중 경고 없이 기존 방식대로 수행된다.

11.2.0.1에는 호환성 문제가 있어서 AMM (Automatic Memory Management) 구성은 안된다.
다만, ASMM (Automatic Shared Memory Management)는 지원한다.
즉, memory_target, memory_max_target 을 설정하는 AMM은 안되니, reset하고
대신 sga_target, sga_max_size, pga_aggregate_target 으로 조정해야한다.
SQL> show parameter target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 0
memory_target                        big integer 0

parallel_servers_target              integer     16
pga_aggregate_target                 big integer 180M
sga_target                           big integer 600M
SQL>
11.2.0.2 부터는 HugePage를 강제로 사용하고 모자라면 기동안되게하는
use_large_pages설정이 추가됐다.
ALTER SYSTEM SET use_large_pages=only SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
 단순히 swap되지 않고 메모리에만 있게 하려면 다른 방법도 있다.
/etc/fstab에 보면 메모리를 통상 /dev/shm 에 shm 혹은 tmpfs 로 마운트하는데
ramfs로 마운트하면 swap되지 않는다.

# umount /dev/shm
# mount -t ramfs ramfs /dev/shm

CentOS - Oracle 설치위한 시스템 라이브러리

CentOS - Required Packages for Oracle 

(CentOS - Oracle 설치위한 시스템 라이브러리)


Oracle 11gR2 - CentOS 5 에서

CentOS 5 (x86)
binutils
compat-libstdc++-33
elfutils-libelf
elfutils-libelf-devel
elfutils-libelf-devel-static
gcc
gcc-c++
glibc
glibc-common
glibc-devel
glibc-headers
kernel-headers
ksh
libaio
libaio-devel
libgcc
libgomp
libstdc++
libstdc++-devel
make
sysstat
unixODBC
unixODBC-devel

CentOS 5 (x64)
binutils
compat-libstdc++-33 (both 32 and 64 bit required)
elfutils-libelf
elfutils-libelf-develelfutils-libelf-devel-static
gcc
gcc-c++
glibc                         (both 32 and 64 bit required)
glibc-common
glibc-devel                (both 32 and 64 bit required)
glibc-headers
ksh
libaio                         (both 32 and 64 bit required)
libaio-devel               (both 32 and 64 bit required)
libgcc                        (both 32 and 64 bit required)
libstdc++                   (both 32 and 64 bit required)
libstdc++-devel
make
sysstat
unixODBC                  (both 32 and 64 bit required)
unixODBC-devel         (both 32 and 64 bit required)

기타 필수적이진 않지만 참고하면 좋을 설정들

 /etc/sysctl.conf
      # Kernel parameter settings for Oracle
 fs.aio-max-nr = 1048576
 fs.file-max = 6815744
 kernel.shmall = 2097152
 kernel.shmmax = 4294967295
 kernel.shmmni = 4096
 kernel.sem = 250 32000 100 128
 net.ipv4.ip_local_port_range = 9000 65500
 net.core.rmem_default = 262144
 net.core.rmem_max = 4194304
 net.core.wmem_default = 262144
 net.core.wmem_max = 1048586

/etc/security/limits.conf
      oracle           soft    nproc   2047
      oracle           hard    nproc   16384
      oracle           soft    nofile  1024
      oracle           hard    nofile  65536
 
/etc/pam.d/login 
      session    required     /lib/security/pam_limits.so
      session    required     pam_limits.so 

2013-10-23

iPad Air - Apple Event october 2013

iPad Air : 얇고 가볍게, iPhone 5S와 같은 CPU, MIMO 지원하는 최초 iOS기기
iPad mini 2 : 레티나 디스플레이, 5S와 동일 CPU

iWork, iLife : 64비트 최적화 및 기능 업그레이드

Mac Pro, Mac Book Pro : 사양 업그레이드


OS X Mavericks : 무료, Maps/iBooks 업그레이드

역시나 한방의 반전없는 싱거운 느낌


http://www.apple.com/apple-events/october-2013/

2013-10-16

쿠키 클릭커 - Cookie Clicker

쿠키 생산을 주제로 한  엽기 타이쿤 류 게임

http://orteil.dashnet.org/cookieclicker/



게임의 정보를 요약해 주는 애드온(javascript)


javascript: (function () {
var jA = document.createElement('script');
jA.setAttribute('type', 'text/javascript');
jA.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js');
jA.onload = function() {
var jB = document.createElement('script');
jB.setAttribute('type', 'text/javascript');
jB.setAttribute('src', 'http://pastebin.com/raw.php?i=2KRNm8Gm');
document.body.appendChild(jB);
};
document.body.appendChild(jA);
}());

bookmark용 링크