Commit 240aade
mm: accelerate mm_populate() treatment of THP pages
This change adds a follow_page_mask function which is equivalent to
follow_page, but with an extra page_mask argument.
follow_page_mask sets *page_mask to HPAGE_PMD_NR - 1 when it encounters
a THP page, and to 0 in other cases.
__get_user_pages() makes use of this in order to accelerate populating
THP ranges - that is, when both the pages and vmas arrays are NULL, we
don't need to iterate HPAGE_PMD_NR times to cover a single THP page (and
we also avoid taking mm->page_table_lock that many times).
Signed-off-by: Michel Lespinasse <walken@google.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>1 parent 28a3571 commit 240aade
3 files changed
+38
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1629 | 1629 | | |
1630 | 1630 | | |
1631 | 1631 | | |
1632 | | - | |
1633 | | - | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
1634 | 1643 | | |
1635 | 1644 | | |
1636 | 1645 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1462 | 1462 | | |
1463 | 1463 | | |
1464 | 1464 | | |
1465 | | - | |
| 1465 | + | |
1466 | 1466 | | |
1467 | 1467 | | |
1468 | 1468 | | |
| 1469 | + | |
1469 | 1470 | | |
1470 | 1471 | | |
1471 | 1472 | | |
1472 | 1473 | | |
1473 | 1474 | | |
1474 | 1475 | | |
1475 | 1476 | | |
1476 | | - | |
1477 | | - | |
| 1477 | + | |
| 1478 | + | |
| 1479 | + | |
1478 | 1480 | | |
1479 | 1481 | | |
1480 | 1482 | | |
| |||
1484 | 1486 | | |
1485 | 1487 | | |
1486 | 1488 | | |
| 1489 | + | |
| 1490 | + | |
1487 | 1491 | | |
1488 | 1492 | | |
1489 | 1493 | | |
| |||
1530 | 1534 | | |
1531 | 1535 | | |
1532 | 1536 | | |
| 1537 | + | |
1533 | 1538 | | |
1534 | 1539 | | |
1535 | 1540 | | |
| |||
1684 | 1689 | | |
1685 | 1690 | | |
1686 | 1691 | | |
| 1692 | + | |
1687 | 1693 | | |
1688 | 1694 | | |
1689 | 1695 | | |
| |||
1761 | 1767 | | |
1762 | 1768 | | |
1763 | 1769 | | |
| 1770 | + | |
1764 | 1771 | | |
1765 | 1772 | | |
1766 | 1773 | | |
| |||
1778 | 1785 | | |
1779 | 1786 | | |
1780 | 1787 | | |
| 1788 | + | |
1781 | 1789 | | |
1782 | 1790 | | |
1783 | 1791 | | |
| |||
1787 | 1795 | | |
1788 | 1796 | | |
1789 | 1797 | | |
1790 | | - | |
| 1798 | + | |
| 1799 | + | |
1791 | 1800 | | |
1792 | 1801 | | |
1793 | 1802 | | |
| |||
1861 | 1870 | | |
1862 | 1871 | | |
1863 | 1872 | | |
| 1873 | + | |
1864 | 1874 | | |
1865 | 1875 | | |
1866 | | - | |
| 1876 | + | |
1867 | 1877 | | |
1868 | | - | |
1869 | | - | |
1870 | | - | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
1871 | 1886 | | |
1872 | 1887 | | |
1873 | 1888 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1819 | 1819 | | |
1820 | 1820 | | |
1821 | 1821 | | |
1822 | | - | |
1823 | | - | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
1824 | 1825 | | |
| 1826 | + | |
1825 | 1827 | | |
1826 | 1828 | | |
1827 | 1829 | | |
| |||
0 commit comments