aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig111
-rw-r--r--init/main.c4
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
489config CONTEXT_TRACKING
490 bool
491
489config RCU_USER_QS 492config 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
505config RCU_USER_QS_FORCE 509config 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
519config RCU_FANOUT 519config 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
657config 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
658endmenu # "RCU Subsystem" 679endmenu # "RCU Subsystem"
659 680
660config IKCONFIG 681config IKCONFIG
@@ -696,6 +717,50 @@ config LOG_BUF_SHIFT
696config HAVE_UNSTABLE_SCHED_CLOCK 717config 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#
724config 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#
730config ARCH_WANT_NUMA_VARIABLE_LOCALITY
731 bool
732
733#
734# For architectures that are willing to define _PAGE_NUMA as _PAGE_PROTNONE
735config ARCH_WANTS_PROT_NUMA_PROT_NONE
736 bool
737
738config 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
744config 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
752config 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
699menuconfig CGROUPS 764menuconfig 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
445void __init __weak thread_info_cache_init(void) 446void __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 */