Какой стандартный размер страницы памяти в ОС и как его узнать в Go?

Ответ

Размер страницы (page size) — это минимальный блок физической памяти, которым оперирует операционная система. В большинстве современных ОС (Linux, macOS, Windows) и на популярных архитектурах (x86-64, ARM64) стандартный размер страницы составляет 4096 байт (4 КБ).

Знание размера страницы важно для оптимизации производительности при работе с файлами, mmap и выделением больших объемов памяти.

В Go получить размер страницы можно несколькими способами:

  1. Через пакет os (самый простой способ):

    import (
        "fmt"
        "os"
    )
    
    func main() {
        // os.Getpagesize() возвращает системный размер страницы
        fmt.Printf("Page size: %d bytesn", os.Getpagesize()) // Вывод: Page size: 4096 bytes
    }
  2. Через системные вызовы (для Unix-подобных систем):

    import (
        "fmt"
        "golang.org/x/sys/unix"
    )
    
    func main() {
        size, err := unix.Getpagesize()
        if err == nil {
            fmt.Printf("Page size: %d bytesn", size)
        }
    }

Дополнительно: Некоторые системы поддерживают "huge pages" (например, 2 МБ или 1 ГБ) для уменьшения накладных расходов при работе с очень большими объемами данных.