diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 111 | ||||
-rw-r--r-- | init/main.c | 4 |
2 files changed, 91 insertions, 24 deletions
diff --git a/init/Kconfig b/init/Kconfig index 6fdd6e339326..1a207efca591 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -486,35 +486,35 @@ config PREEMPT_RCU | |||
486 | This option enables preemptible-RCU code that is common between | 486 | This option enables preemptible-RCU code that is common between |
487 | the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations. | 487 | the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations. |
488 | 488 | ||
489 | config CONTEXT_TRACKING | ||
490 | bool | ||
491 | |||
489 | config RCU_USER_QS | 492 | config RCU_USER_QS |
490 | bool "Consider userspace as in RCU extended quiescent state" | 493 | bool "Consider userspace as in RCU extended quiescent state" |
491 | depends on HAVE_RCU_USER_QS && SMP | 494 | depends on HAVE_CONTEXT_TRACKING && SMP |
495 | select CONTEXT_TRACKING | ||
492 | help | 496 | help |
493 | This option sets hooks on kernel / userspace boundaries and | 497 | This option sets hooks on kernel / userspace boundaries and |
494 | puts RCU in extended quiescent state when the CPU runs in | 498 | puts RCU in extended quiescent state when the CPU runs in |
495 | userspace. It means that when a CPU runs in userspace, it is | 499 | userspace. It means that when a CPU runs in userspace, it is |
496 | excluded from the global RCU state machine and thus doesn't | 500 | excluded from the global RCU state machine and thus doesn't |
497 | to keep the timer tick on for RCU. | 501 | try to keep the timer tick on for RCU. |
498 | 502 | ||
499 | Unless you want to hack and help the development of the full | 503 | Unless you want to hack and help the development of the full |
500 | tickless feature, you shouldn't enable this option. It adds | 504 | dynticks mode, you shouldn't enable this option. It also |
501 | unnecessary overhead. | 505 | adds unnecessary overhead. |
502 | 506 | ||
503 | If unsure say N | 507 | If unsure say N |
504 | 508 | ||
505 | config RCU_USER_QS_FORCE | 509 | config CONTEXT_TRACKING_FORCE |
506 | bool "Force userspace extended QS by default" | 510 | bool "Force context tracking" |
507 | depends on RCU_USER_QS | 511 | depends on CONTEXT_TRACKING |
508 | help | 512 | help |
509 | Set the hooks in user/kernel boundaries by default in order to | 513 | Probe on user/kernel boundaries by default in order to |
510 | test this feature that treats userspace as an extended quiescent | 514 | test the features that rely on it such as userspace RCU extended |
511 | state until we have a real user like a full adaptive nohz option. | 515 | quiescent states. |
512 | 516 | This test is there for debugging until we have a real user like the | |
513 | Unless you want to hack and help the development of the full | 517 | full dynticks mode. |
514 | tickless feature, you shouldn't enable this option. It adds | ||
515 | unnecessary overhead. | ||
516 | |||
517 | If unsure say N | ||
518 | 518 | ||
519 | config RCU_FANOUT | 519 | config RCU_FANOUT |
520 | int "Tree-based hierarchical RCU fanout value" | 520 | int "Tree-based hierarchical RCU fanout value" |
@@ -582,14 +582,13 @@ config RCU_FAST_NO_HZ | |||
582 | depends on NO_HZ && SMP | 582 | depends on NO_HZ && SMP |
583 | default n | 583 | default n |
584 | help | 584 | help |
585 | This option causes RCU to attempt to accelerate grace periods | 585 | This option causes RCU to attempt to accelerate grace periods in |
586 | in order to allow CPUs to enter dynticks-idle state more | 586 | order to allow CPUs to enter dynticks-idle state more quickly. |
587 | quickly. On the other hand, this option increases the overhead | 587 | On the other hand, this option increases the overhead of the |
588 | of the dynticks-idle checking, particularly on systems with | 588 | dynticks-idle checking, thus degrading scheduling latency. |
589 | large numbers of CPUs. | ||
590 | 589 | ||
591 | Say Y if energy efficiency is critically important, particularly | 590 | Say Y if energy efficiency is critically important, and you don't |
592 | if you have relatively few CPUs. | 591 | care about real-time response. |
593 | 592 | ||
594 | Say N if you are unsure. | 593 | Say N if you are unsure. |
595 | 594 | ||
@@ -655,6 +654,28 @@ config RCU_BOOST_DELAY | |||
655 | 654 | ||
656 | Accept the default if unsure. | 655 | Accept the default if unsure. |
657 | 656 | ||
657 | config RCU_NOCB_CPU | ||
658 | bool "Offload RCU callback processing from boot-selected CPUs" | ||
659 | depends on TREE_RCU || TREE_PREEMPT_RCU | ||
660 | default n | ||
661 | help | ||
662 | Use this option to reduce OS jitter for aggressive HPC or | ||
663 | real-time workloads. It can also be used to offload RCU | ||
664 | callback invocation to energy-efficient CPUs in battery-powered | ||
665 | asymmetric multiprocessors. | ||
666 | |||
667 | This option offloads callback invocation from the set of | ||
668 | CPUs specified at boot time by the rcu_nocbs parameter. | ||
669 | For each such CPU, a kthread ("rcuoN") will be created to | ||
670 | invoke callbacks, where the "N" is the CPU being offloaded. | ||
671 | Nothing prevents this kthread from running on the specified | ||
672 | CPUs, but (1) the kthreads may be preempted between each | ||
673 | callback, and (2) affinity or cgroups can be used to force | ||
674 | the kthreads to run on whatever set of CPUs is desired. | ||
675 | |||
676 | Say Y here if you want reduced OS jitter on selected CPUs. | ||
677 | Say N here if you are unsure. | ||
678 | |||
658 | endmenu # "RCU Subsystem" | 679 | endmenu # "RCU Subsystem" |
659 | 680 | ||
660 | config IKCONFIG | 681 | config IKCONFIG |
@@ -696,6 +717,50 @@ config LOG_BUF_SHIFT | |||
696 | config HAVE_UNSTABLE_SCHED_CLOCK | 717 | config HAVE_UNSTABLE_SCHED_CLOCK |
697 | bool | 718 | bool |
698 | 719 | ||
720 | # | ||
721 | # For architectures that want to enable the support for NUMA-affine scheduler | ||
722 | # balancing logic: | ||
723 | # | ||
724 | config ARCH_SUPPORTS_NUMA_BALANCING | ||
725 | bool | ||
726 | |||
727 | # For architectures that (ab)use NUMA to represent different memory regions | ||
728 | # all cpu-local but of different latencies, such as SuperH. | ||
729 | # | ||
730 | config ARCH_WANT_NUMA_VARIABLE_LOCALITY | ||
731 | bool | ||
732 | |||
733 | # | ||
734 | # For architectures that are willing to define _PAGE_NUMA as _PAGE_PROTNONE | ||
735 | config ARCH_WANTS_PROT_NUMA_PROT_NONE | ||
736 | bool | ||
737 | |||
738 | config ARCH_USES_NUMA_PROT_NONE | ||
739 | bool | ||
740 | default y | ||
741 | depends on ARCH_WANTS_PROT_NUMA_PROT_NONE | ||
742 | depends on NUMA_BALANCING | ||
743 | |||
744 | config NUMA_BALANCING_DEFAULT_ENABLED | ||
745 | bool "Automatically enable NUMA aware memory/task placement" | ||
746 | default y | ||
747 | depends on NUMA_BALANCING | ||
748 | help | ||
749 | If set, autonumic NUMA balancing will be enabled if running on a NUMA | ||
750 | machine. | ||
751 | |||
752 | config NUMA_BALANCING | ||
753 | bool "Memory placement aware NUMA scheduler" | ||
754 | depends on ARCH_SUPPORTS_NUMA_BALANCING | ||
755 | depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY | ||
756 | depends on SMP && NUMA && MIGRATION | ||
757 | help | ||
758 | This option adds support for automatic NUMA aware memory/task placement. | ||
759 | The mechanism is quite primitive and is based on migrating memory when | ||
760 | it is references to the node the task is running on. | ||
761 | |||
762 | This system will be inactive on UMA systems. | ||
763 | |||
699 | menuconfig CGROUPS | 764 | menuconfig CGROUPS |
700 | boolean "Control Group support" | 765 | boolean "Control Group support" |
701 | depends on EVENTFD | 766 | depends on EVENTFD |
diff --git a/init/main.c b/init/main.c index 9cf77ab138a6..63ae904a99a8 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -442,9 +442,11 @@ void __init __weak smp_setup_processor_id(void) | |||
442 | { | 442 | { |
443 | } | 443 | } |
444 | 444 | ||
445 | # if THREAD_SIZE >= PAGE_SIZE | ||
445 | void __init __weak thread_info_cache_init(void) | 446 | void __init __weak thread_info_cache_init(void) |
446 | { | 447 | { |
447 | } | 448 | } |
449 | #endif | ||
448 | 450 | ||
449 | /* | 451 | /* |
450 | * Set up kernel memory allocators | 452 | * Set up kernel memory allocators |
@@ -855,7 +857,7 @@ static void __init kernel_init_freeable(void) | |||
855 | /* | 857 | /* |
856 | * init can allocate pages on any node | 858 | * init can allocate pages on any node |
857 | */ | 859 | */ |
858 | set_mems_allowed(node_states[N_HIGH_MEMORY]); | 860 | set_mems_allowed(node_states[N_MEMORY]); |
859 | /* | 861 | /* |
860 | * init can run on any cpu. | 862 | * init can run on any cpu. |
861 | */ | 863 | */ |