इस पेज पर डिवाइस में कर्नेल पेज के साइज़ का इस्तेमाल करने के अलग-अलग तरीके बताए गए हैं. डिवाइस से कनेक्ट करने के लिए, adb
का इस्तेमाल किया जा सकता है.
$ adb shell
प्रोग्रामिंग कोड का इस्तेमाल करें
C++ में, getpagesize(2)
को प्राथमिकता दें:
# include <unistd.h>
...
... = getpagesize();
Java में, सिस्टम कॉन्फ़िगरेशन का इस्तेमाल किया जा सकता है:
import android.system.Os;
import android.system.OsConstants;
... = Os.sysconf(OsConstants._SC_PAGE_SIZE);
getconf
निर्देश का इस्तेमाल करना
पेज का साइज़ जानने के लिए, getconf
कमांड का इस्तेमाल करें. यहां इसका तरीका बताया गया है:
$ getconf PAGE_SIZE
4096
/proc/<pid>/smaps
pseudo फ़ाइल का इस्तेमाल करें
सूडो फ़ाइल /proc/<pid>/smaps
में मौजूद KernelPageSize
फ़ील्ड, पेज का साइज़ दिखाता है. यह इस तरह से दिखाया गया है:
$ grep KernelPageSize /proc/1/smaps
KernelPageSize: 4 kB
LD_SHOW_AUXV=1
लिंकर फ़्लैग का इस्तेमाल करें
जो प्रोग्राम एक्ज़ीक्यूट होने वाला है उसके सहायक वेक्टर को प्रिंट करने के लिए, LD_SHOW_AUXV
फ़्लैग का इस्तेमाल करें. AT_PAGESZ
फ़ील्ड में पेज का साइज़ होता है, जो इस तरह से दिखाया गया है:
$ LD_SHOW_AUXV=1 ls
AT_SYSINFO_EHDR 0x7250460000
AT_MINSIGSTKSZ 4720
AT_HWCAP 0b11111111111111111111111111111111
AT_PAGESZ 4096
AT_CLKTCK 100
AT_PHDR 0x5fda1e0040
AT_PHENT 56
AT_PHNUM 12
AT_BASE 0x72502f8000
AT_FLAGS 0
AT_ENTRY 0x5fda210000
AT_UID 0
AT_EUID 0
AT_GID 0
AT_EGID 0
AT_SECURE 0
AT_RANDOM 0x7fc59d66f8
AT_HWCAP2 0b100011001111111111
AT_EXECFN "/system/bin/ls"
AT_PLATFORM "aarch64"
data dev. init vendor
/proc/config.gz
pseudo फ़ाइल का इस्तेमाल करें
सूडो फ़ाइल में पेज साइज़ के लिए, कर्नेल कॉन्फ़िगरेशन की जांच करें
/proc/config.gz
. पेज के साइज़ के लिए कॉन्फ़िगरेशन ये हो सकते हैं:
CONFIG_ARM64_4K_PAGES=y
: कर्नेल 4096-बाइट वाले पेजों का इस्तेमाल करता है.CONFIG_ARM64_16K_PAGES=y
: कर्नेल 16384-बाइट वाले पेजों का इस्तेमाल करता है.CONFIG_ARM64_64K_PAGES=y
: कर्नेल 65536-बाइट वाले पेजों का इस्तेमाल करता है.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y
ऑक्ज़िलियरी वेक्टर का इस्तेमाल करना
जब कोई प्रोग्राम चलाया जाता है, तो कर्नेल, सहायक वेक्टर को जानकारी के साथ बांटता और शुरू करता है. जैसे, पेज का साइज़, जिसका इस्तेमाल डाइनैमिक लिंकर करता है. सहायक वेक्टर को pseudo फ़ाइल /proc/<pid>/auxv
से पढ़ा जा सकता है. प्रोसेस 1 के सहायक वेक्टर से पेज के साइज़ को इस तरह दिखाया जा सकता है:
$ od -N8 -j56 -td8 -An /proc/1/auxv
4096
कहां:
od
, फ़ाइलों को हेक्साडेसिमल, दशमलव या अन्य फ़ॉर्मैट में डंप करता है.-N8 -j56
, ऑफ़सेट 56 से शुरू होने वाली 8 बाइट को फ़ाइल में डंप करता है, जोAT_PAGESZ
से जुड़ी होती है.-td8
, वैल्यू को दशमलव 8-बाइट वाले पूर्णांक के तौर पर फ़ॉर्मैट करता है.-An
की वजह से सिर्फ़ वैल्यू दिखती है, उसका पता नहीं.