← Back to Index

openshift 4.3 huge page

video

https://docs.openshift.com/container-platform/4.3/scalability_and_performance/what-huge-pages-do-and-how-they-are-consumed-by-apps.html

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-configuring_transparent_huge_pages


        # check original status
        
        cat /sys/kernel/mm/transparent_hugepage/enabled
        
        # [always] madvise never
        
        cat /sys/kernel/mm/transparent_hugepage/defrag
        
        # [always] madvise never
        
        # begin to test 
        
        oc label node infra1.hsc.redhat.ren hugepages=true
        
        cat << EOF > hugepages_tuning.yaml
        apiVersion: tuned.openshift.io/v1
        kind: Tuned
        metadata:
          name: hugepages 
          namespace: openshift-cluster-node-tuning-operator
        spec:
          profile: 
          - data: |
              [main]
              summary=Configuration for hugepages
              include=openshift-node
        
              [vm]
              transparent_hugepages=never
        
              [sysctl]
              vm.nr_hugepages=1024
            name: node-hugepages
          recommend:
          - match: 
            - label: hugepages
            priority: 30
            profile: node-hugepages
        EOF
        
        oc create -f hugepages_tuning.yaml
        
        oc get pod -o wide -n openshift-cluster-node-tuning-operator
        
        oc logs tuned-86g8b \
            -n openshift-cluster-node-tuning-operator | grep 'applied$' | tail -n1
        
        # check result
        
        cat /sys/kernel/mm/transparent_hugepage/enabled
        
        # always madvise [never]
        
        cat /sys/kernel/mm/transparent_hugepage/defrag
        
        # [always] madvise never
        
        # node feature discovery 功能已经触发了profile自动选择。
        
        cat << EOF > hugepages-pod.yaml
        apiVersion: v1
        kind: Pod
        metadata:
          generateName: hugepages-volume-
        spec:
          containers:
          - securityContext:
              privileged: true
            image: registry.redhat.ren:5443/docker.io/wangzheng422/centos:centos7-test
            imagePullPolicy: Always
            command:
            - sleep
            - inf
            name: example
            volumeMounts:
            - mountPath: /dev/hugepages
              name: hugepage
            resources:
              limits:
                hugepages-2Mi: 100Mi 
                memory: "1Gi"
                cpu: "1"
          volumes:
          - name: hugepage
            emptyDir:
              medium: HugePages
        EOF
        oc create -n demo -f hugepages-pod.yaml
        
        # login into pod
        
        oc rsh hugepages-volume-9nwlv
        
        mount | grep page
        
        # nodev on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2Mi)
        
        # 来看看系统huge page的状态
        
        # yum install libhugetlbfs-utils
        
        hugeadm --explain
        
        # 根据以下的2个帖子,hugepage是给程序分配内存用的,不能用文件操作演示
        
        # https://serverfault.com/questions/811670/how-to-create-copy-a-file-into-hugetlbfs
        
        # https://stackoverflow.com/questions/40285971/how-to-load-text-segments-of-shared-libraries-into-huge-pages-on-linux]
        
        # sysbench memory --memory-hugetlb=on --memory-total-size=200M run
        
        # restore
        
        oc delete -f hugepages_tuning.yaml
        
        # reboot