meminfo(2) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

meminfo(2)

meminfo(2)                       System Calls                       meminfo(2)



NAME
       meminfo - provide information about memory

SYNOPSIS
       #include <sys/types.h>
       #include <sys/mman.h>

       int meminfo(const uint64_t inaddr[], int addr_count,
            const uint_t info_req[], int info_count, uint64_t outdata[],
            uint_t validity[]);

PARAMETERS
       inaddr        array  of addresses to be examined; the maximum number of
                     addresses that can be processed for each call is MAX_MEM‐
                     INFO_CNT


       addr_count    number of addresses to be examined. Request sizes exceed‐
                     ing MAX_MEMINFO_CNT are not examined atomically and  thus
                     may not be self-consistent.


       info_req      array of types of information requested


       info_count    number  of  pieces  of  information  requested  for  each
                     address in inaddr


       outdata       array into which results are placed; array size  must  be
                     the product of info_count and addr_count


       validity      array of size addr_count containing bitwise result codes;
                     0th  bit  evaluates  validity  of   corresponding   input
                     address,  1st bit validity of response to first member of
                     info_req, and so on


DESCRIPTION
       The meminfo() function provides information about virtual and  physical
       memory particular to the calling process. The user or developer of per‐
       formance utilities can use this information to  analyze  system  memory
       allocations and develop a better understanding of the factors affecting
       application performance.


       The caller of meminfo() can obtain the following types  of  information
       about both virtual and physical memory.

       MEMINFO_VPHYSICAL         physical  address  corresponding  to  virtual
                                 address (requires PRIV_ALL)


       MEMINFO_VLGRP             locality group of physical page corresponding
                                 to virtual address


       MEMINFO_VPAGESIZE         size  of  physical page corresponding to vir‐
                                 tual address


       MEMINFO_VREPLCNT          number of replicated  physical  pages  corre‐
                                 sponding to specified virtual address


       MEMINFO_VREPL | n         nth  physical  replica  of  specified virtual
                                 address


       MEMINFO_VREPL_LGRP | n    lgrp of nth  physical  replica  of  specified
                                 virtual address


       MEMINFO_PLGRP             locality group of specified physical address


       MEMINFO_VADI              ADI status for the specified virtual address.
                                 0=ADI disabled, 1=ADI enabled.



       For all types of information except MEMINFO_VADI, any addresses in  the
       inaddr array that have never been referenced will not have any informa‐
       tion about them returned by  meminfo().  This  can  also  occur  if  an
       address has not been referenced recently and the physical page that had
       been backing that address has been  paged  out.  Information  for  MEM‐
       INFO_VADI is always returned.

RETURN VALUES
       Upon  successful  completion  meminfo()  returns  0.  Otherwise  −1  is
       returned and errno is set to indicate the error.

ERRORS
       The meminfo() function will fail if:

       EFAULT     The area pointed to by outdata  or  validity  could  not  be
                  written,  or the data pointed to by info_req or inaddr could
                  not be read.


       EINVAL     The value of info_count is greater than 31 or less  than  1,
                  or the value of addr_count is less than 1.


       ENOTSUP    MEMINFO_VADI  is  specified, and ADI is not supported by the
                  platform.

                  MEMINFO_VADI is  specified,  and  the  caller  is  a  32-bit
                  process.


EXAMPLES
       Example 1 Print physical pages and page sizes corresponding to a set of
       virtual addresses.



       The following example prints the physical pages and page  sizes  corre‐
       sponding to a set of virtual addresses.


         void
         print_info(void **addrvec, int how_many)
         {
             static const uint_t info[] = {
                 MEMINFO_VPHYSICAL,
                 MEMINFO_VPAGESIZE
             };

             int info_num = sizeof (info) / sizeof (info[0]);
             int i;

             uint64_t *inaddr = alloca(sizeof (uint64_t) * how_many);
             uint64_t *outdata = alloca(sizeof (uint64_t) * how_many * info_num);
             uint_t *validity = alloca(sizeof (uint_t) * how_many);

             for (i = 0; i < how_many; i++)
                 inaddr[i] = (uint64_t)addrvec[i];

             if (meminfo(inaddr, how_many, info, info_num, outdata,
                         validity) < 0) {
                 perror("meminfo");
                 return;
             }

             for (i = 0; i < how_many; i++) {
                 if ((validity[i] & 1) == 0)
                     printf("address 0x%llx not part of address space\n",
                         inaddr[i]);

                 else if ((validity[i] & 2) == 0)
                     printf("address 0x%llx has no physical page "
                         "associated with it\n", inaddr[i]);

                 else {
                     char buff[80];
                     if ((validity[i] & 4) == 0)
                         strcpy(buff, "<Unknown>");
                     else
                         sprintf(buff, "%lld",
                             outdata[i * info_num + 1]);

                     printf("address 0x%llx is backed by physical "
                         "page 0x%llx of size %s\n",
                         inaddr[i], outdata[i * info_num], buff);
                 }
             }
         }


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface  StabilityCommitted  _  MT-LevelAsync-Signal-
       Safe


SEE ALSO
       memcntl(2),  mmap(2),  gethomelgroup(3C), getpagesize(3C), madvise(3C),
       sysconf(3C), attributes(7)



Oracle Solaris 11.4               04 Nov 2015                       meminfo(2)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3