linux开启PREEMPT_RT

PREEMPT_RT的wiki

参考preempt_rt分支的wiki主页

如何开启linux的PREEMPT_RT?

发现两种方法能调出linux的Fully Preemptible Kernel (Real-Time)选项

linux-5.10.59内核为例

方法1:不打rt补丁

在我的环境中,make menuconfig发现在general setup中找不到PREEMPT_RT选项,原来是需要开启另外两个支持:

  • [*] Configure standard kernel features (expert users) --->
  • linux-5.10.59/arch/Kconfig中的ARCH_SUPPORTS_RT修改为def_bool y

这样make menuconfig就出现了Fully Preemptible Kernel (Real-Time)选项:
在这里插入图片描述

方法2:打rt补丁

patch -p1 < ../patch-5.10.59-rt52.patch
此时make menuconfig还是未出现Fully Preemptible Kernel (Real-Time)选项,还要开启:

  • [*] Configure standard kernel features (expert users) --->

这时候才可以选择RT。

方法1和方法2有何异同?

打上rt补丁,有很多文件被修改了

        modified:   Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.rst
        modified:   Documentation/RCU/Design/Requirements/Requirements.rst
        modified:   Documentation/RCU/checklist.rst
        modified:   Documentation/RCU/rcubarrier.rst
        modified:   Documentation/RCU/stallwarn.rst
        modified:   Documentation/RCU/whatisRCU.rst
        modified:   Documentation/admin-guide/kernel-parameters.txt
        modified:   Documentation/driver-api/io-mapping.rst
        modified:   arch/Kconfig
        deleted:    arch/alpha/include/asm/kmap_types.h
        modified:   arch/alpha/include/asm/spinlock_types.h
        modified:   arch/arc/Kconfig
        modified:   arch/arc/include/asm/highmem.h
        deleted:    arch/arc/include/asm/kmap_types.h
        modified:   arch/arc/mm/highmem.c
        modified:   arch/arm/Kconfig
        modified:   arch/arm/include/asm/fixmap.h
        modified:   arch/arm/include/asm/hardirq.h
        modified:   arch/arm/include/asm/highmem.h
        modified:   arch/arm/include/asm/irq.h
        deleted:    arch/arm/include/asm/kmap_types.h
        modified:   arch/arm/include/asm/spinlock_types.h
        modified:   arch/arm/include/asm/thread_info.h
        modified:   arch/arm/kernel/asm-offsets.c
        modified:   arch/arm/kernel/entry-armv.S
        modified:   arch/arm/kernel/entry-common.S
        modified:   arch/arm/kernel/signal.c
        modified:   arch/arm/kernel/smp.c
        modified:   arch/arm/mm/Makefile
        modified:   arch/arm/mm/cache-feroceon-l2.c
        modified:   arch/arm/mm/cache-xsc3l2.c
        modified:   arch/arm/mm/fault.c
        deleted:    arch/arm/mm/highmem.c
        modified:   arch/arm64/Kconfig
        modified:   arch/arm64/include/asm/hardirq.h
        modified:   arch/arm64/include/asm/preempt.h
        modified:   arch/arm64/include/asm/spinlock_types.h
        modified:   arch/arm64/include/asm/thread_info.h
        modified:   arch/arm64/kernel/asm-offsets.c
        modified:   arch/arm64/kernel/entry.S
        modified:   arch/arm64/kernel/fpsimd.c
        modified:   arch/arm64/kernel/signal.c
        modified:   arch/arm64/kvm/arm.c
        modified:   arch/csky/Kconfig
        modified:   arch/csky/include/asm/fixmap.h
        modified:   arch/csky/include/asm/highmem.h
        modified:   arch/csky/mm/highmem.c
        modified:   arch/hexagon/include/asm/spinlock_types.h
        deleted:    arch/ia64/include/asm/kmap_types.h
        modified:   arch/ia64/include/asm/spinlock_types.h
        modified:   arch/ia64/kernel/time.c
        modified:   arch/microblaze/Kconfig
        modified:   arch/microblaze/include/asm/fixmap.h
        modified:   arch/microblaze/include/asm/highmem.h
        modified:   arch/microblaze/mm/Makefile
        deleted:    arch/microblaze/mm/highmem.c
        modified:   arch/microblaze/mm/init.c
        modified:   arch/mips/Kconfig
        modified:   arch/mips/include/asm/fixmap.h
        modified:   arch/mips/include/asm/highmem.h
        deleted:    arch/mips/include/asm/kmap_types.h
        modified:   arch/mips/kernel/crash_dump.c
        modified:   arch/mips/mm/highmem.c
        modified:   arch/mips/mm/init.c
        modified:   arch/nds32/Kconfig.cpu
        modified:   arch/nds32/include/asm/fixmap.h
        modified:   arch/nds32/include/asm/highmem.h
        modified:   arch/nds32/mm/Makefile
        deleted:    arch/nds32/mm/highmem.c
        modified:   arch/openrisc/mm/init.c
        modified:   arch/openrisc/mm/ioremap.c
        modified:   arch/parisc/include/asm/hardirq.h
        deleted:    arch/parisc/include/asm/kmap_types.h
        modified:   arch/powerpc/Kconfig
        modified:   arch/powerpc/include/asm/cmpxchg.h
        modified:   arch/powerpc/include/asm/fixmap.h
        modified:   arch/powerpc/include/asm/highmem.h
        deleted:    arch/powerpc/include/asm/kmap_types.h
        modified:   arch/powerpc/include/asm/simple_spinlock_types.h
        modified:   arch/powerpc/include/asm/spinlock_types.h
        modified:   arch/powerpc/include/asm/stackprotector.h
        modified:   arch/powerpc/include/asm/thread_info.h
        modified:   arch/powerpc/kernel/asm-offsets.c
        modified:   arch/powerpc/kernel/entry_32.S
        modified:   arch/powerpc/kernel/exceptions-64e.S
        modified:   arch/powerpc/kernel/irq.c
        modified:   arch/powerpc/kernel/misc_32.S
        modified:   arch/powerpc/kernel/misc_64.S
        modified:   arch/powerpc/kernel/nvram_64.c
        modified:   arch/powerpc/kernel/syscall_64.c
        modified:   arch/powerpc/kernel/time.c
        modified:   arch/powerpc/kernel/traps.c
        modified:   arch/powerpc/kernel/watchdog.c
        modified:   arch/powerpc/kexec/crash.c
        modified:   arch/powerpc/kvm/Kconfig
        modified:   arch/powerpc/mm/Makefile
        deleted:    arch/powerpc/mm/highmem.c
        modified:   arch/powerpc/mm/mem.c
        modified:   arch/powerpc/platforms/powernv/opal-kmsg.c
        modified:   arch/powerpc/platforms/pseries/iommu.c
        modified:   arch/powerpc/xmon/xmon.c
        modified:   arch/s390/Kconfig
        modified:   arch/s390/include/asm/spinlock_types.h
        modified:   arch/s390/include/asm/vtime.h
        modified:   arch/s390/kernel/vtime.c
        modified:   arch/sh/include/asm/fixmap.h
        modified:   arch/sh/include/asm/hardirq.h
        deleted:    arch/sh/include/asm/kmap_types.h
        modified:   arch/sh/include/asm/spinlock_types.h
        modified:   arch/sh/kernel/irq.c
        modified:   arch/sh/kernel/traps.c
        modified:   arch/sh/mm/init.c
        modified:   arch/sparc/Kconfig
        modified:   arch/sparc/include/asm/highmem.h
        deleted:    arch/sparc/include/asm/kmap_types.h
        modified:   arch/sparc/include/asm/vaddrs.h
        modified:   arch/sparc/kernel/irq_64.c
        modified:   arch/sparc/mm/Makefile
        deleted:    arch/sparc/mm/highmem.c
        modified:   arch/sparc/mm/srmmu.c
        modified:   arch/um/include/asm/fixmap.h
        modified:   arch/um/include/asm/hardirq.h
        deleted:    arch/um/include/asm/kmap_types.h
        modified:   arch/um/kernel/kmsg_dump.c
        modified:   arch/x86/Kconfig
        modified:   arch/x86/crypto/aesni-intel_glue.c
        modified:   arch/x86/crypto/cast5_avx_glue.c
        modified:   arch/x86/crypto/glue_helper.c
        modified:   arch/x86/include/asm/fixmap.h
        modified:   arch/x86/include/asm/fpu/api.h
        modified:   arch/x86/include/asm/highmem.h
        modified:   arch/x86/include/asm/iomap.h
        deleted:    arch/x86/include/asm/kmap_types.h
        modified:   arch/x86/include/asm/paravirt_types.h
        modified:   arch/x86/include/asm/preempt.h
        modified:   arch/x86/include/asm/signal.h
        modified:   arch/x86/include/asm/stackprotector.h
        modified:   arch/x86/include/asm/thread_info.h
        modified:   arch/x86/kernel/cpu/mshyperv.c
        modified:   arch/x86/kernel/crash_dump_32.c
        modified:   arch/x86/kernel/fpu/core.c
        modified:   arch/x86/kernel/irq_32.c
        modified:   arch/x86/kernel/irq_64.c
        modified:   arch/x86/kvm/x86.c
        modified:   arch/x86/mm/highmem_32.c
        modified:   arch/x86/mm/init_32.c
        modified:   arch/x86/mm/iomap_32.c
        modified:   arch/xtensa/Kconfig
        modified:   arch/xtensa/include/asm/fixmap.h
        modified:   arch/xtensa/include/asm/highmem.h
        modified:   arch/xtensa/include/asm/spinlock_types.h
        modified:   arch/xtensa/mm/highmem.c
        modified:   block/blk-mq.c
        modified:   crypto/cryptd.c
        modified:   drivers/atm/eni.c
        modified:   drivers/block/zram/zram_drv.c
        modified:   drivers/block/zram/zram_drv.h
        modified:   drivers/char/random.c
        modified:   drivers/char/tpm/tpm-dev-common.c
        modified:   drivers/char/tpm/tpm_tis.c
        modified:   drivers/firewire/ohci.c
        modified:   drivers/firmware/efi/efi.c
        modified:   drivers/gpu/drm/i915/display/intel_sprite.c
        modified:   drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
        modified:   drivers/gpu/drm/i915/gt/intel_engine_pm.c
        modified:   drivers/gpu/drm/i915/i915_gem.c
        modified:   drivers/gpu/drm/i915/i915_irq.c
        modified:   drivers/gpu/drm/i915/i915_trace.h
        modified:   drivers/gpu/drm/i915/selftests/i915_gem.c
        modified:   drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
        modified:   drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h
        modified:   drivers/gpu/drm/qxl/qxl_image.c
        modified:   drivers/gpu/drm/qxl/qxl_ioctl.c
        modified:   drivers/gpu/drm/qxl/qxl_object.c
        modified:   drivers/gpu/drm/qxl/qxl_object.h
        modified:   drivers/gpu/drm/qxl/qxl_release.c
        modified:   drivers/gpu/drm/radeon/radeon_display.c
        modified:   drivers/gpu/drm/ttm/ttm_bo_util.c
        modified:   drivers/gpu/drm/vmwgfx/vmwgfx_blit.c
        modified:   drivers/hv/hyperv_vmbus.h
        modified:   drivers/hv/vmbus_drv.c
        modified:   drivers/leds/trigger/Kconfig
        modified:   drivers/md/raid5.c
        modified:   drivers/md/raid5.h
        modified:   drivers/mtd/mtdoops.c
        modified:   drivers/net/arcnet/arc-rimi.c
        modified:   drivers/net/arcnet/arcdevice.h
        modified:   drivers/net/arcnet/arcnet.c
        modified:   drivers/net/arcnet/com20020-isa.c
        modified:   drivers/net/arcnet/com20020-pci.c
        modified:   drivers/net/arcnet/com20020_cs.c
        modified:   drivers/net/arcnet/com90io.c
        modified:   drivers/net/arcnet/com90xx.c
        modified:   drivers/net/ethernet/chelsio/cxgb/common.h
        modified:   drivers/net/ethernet/chelsio/cxgb/cxgb2.c
        modified:   drivers/net/ethernet/chelsio/cxgb/sge.c
        modified:   drivers/net/ethernet/chelsio/cxgb/sge.h
        modified:   drivers/net/ethernet/chelsio/cxgb/subr.c
        modified:   drivers/net/ethernet/dlink/sundance.c
        modified:   drivers/net/ethernet/jme.c
        modified:   drivers/net/ethernet/jme.h
        modified:   drivers/net/wireless/ath/ath9k/beacon.c
        modified:   drivers/pci/controller/pci-hyperv.c
        modified:   drivers/scsi/fcoe/fcoe.c
        modified:   drivers/scsi/fcoe/fcoe_ctlr.c
        modified:   drivers/scsi/libfc/fc_exch.c
        modified:   drivers/tty/serial/8250/8250.h
        modified:   drivers/tty/serial/8250/8250_core.c
        modified:   drivers/tty/serial/8250/8250_fsl.c
        modified:   drivers/tty/serial/8250/8250_ingenic.c
        modified:   drivers/tty/serial/8250/8250_mtk.c
        modified:   drivers/tty/serial/8250/8250_port.c
        modified:   drivers/tty/serial/amba-pl011.c
        modified:   drivers/tty/serial/omap-serial.c
        modified:   fs/afs/dir_silly.c
        modified:   fs/aio.c
        modified:   fs/btrfs/ctree.h
        modified:   fs/cifs/readdir.c
        modified:   fs/dcache.c
        modified:   fs/fuse/readdir.c
        modified:   fs/inode.c
        modified:   fs/namei.c
        modified:   fs/namespace.c
        modified:   fs/nfs/dir.c
        modified:   fs/nfs/unlink.c
        modified:   fs/proc/array.c
        modified:   fs/proc/base.c
        modified:   fs/proc/proc_sysctl.c
        modified:   fs/pstore/platform.c
        modified:   include/asm-generic/Kbuild
        modified:   include/asm-generic/hardirq.h
        deleted:    include/asm-generic/kmap_types.h
        modified:   include/asm-generic/preempt.h
        modified:   include/linux/blkdev.h
        modified:   include/linux/bottom_half.h
        modified:   include/linux/console.h
        modified:   include/linux/cpuhotplug.h
        modified:   include/linux/cpumask.h
        modified:   include/linux/dcache.h
        modified:   include/linux/debug_locks.h
        modified:   include/linux/delay.h
        modified:   include/linux/entry-common.h
        modified:   include/linux/fs.h
        modified:   include/linux/hardirq.h
        modified:   include/linux/highmem.h
        modified:   include/linux/interrupt.h
        modified:   include/linux/io-mapping.h
        deleted:    include/linux/irq_cpustat.h
        modified:   include/linux/irq_work.h
        modified:   include/linux/irqdesc.h
        modified:   include/linux/irqflags.h
        modified:   include/linux/kernel.h
        modified:   include/linux/kmsg_dump.h
        modified:   include/linux/local_lock_internal.h
        modified:   include/linux/mm_types.h
        modified:   include/linux/mutex.h
        modified:   include/linux/nfs_xdr.h
        modified:   include/linux/notifier.h
        modified:   include/linux/pid.h
        modified:   include/linux/preempt.h
        modified:   include/linux/printk.h
        modified:   include/linux/random.h
        modified:   include/linux/rbtree.h
        modified:   include/linux/rcupdate.h
        modified:   include/linux/rtmutex.h
        modified:   include/linux/rwlock_types.h
        modified:   include/linux/rwsem.h
        modified:   include/linux/sched.h
        modified:   include/linux/sched/hotplug.h
        modified:   include/linux/sched/mm.h
        modified:   include/linux/sched/rt.h
        modified:   include/linux/sched/wake_q.h
        modified:   include/linux/serial_8250.h
        modified:   include/linux/shmem_fs.h
        modified:   include/linux/signal.h
        modified:   include/linux/skbuff.h
        modified:   include/linux/smp.h
        modified:   include/linux/spinlock.h
        modified:   include/linux/spinlock_api_smp.h
        modified:   include/linux/spinlock_types.h
        modified:   include/linux/spinlock_types_up.h
        modified:   include/linux/stop_machine.h
        modified:   include/linux/thread_info.h
        modified:   include/linux/trace_events.h
        modified:   include/linux/u64_stats_sync.h
        modified:   include/linux/vmstat.h
        modified:   include/linux/vtime.h
        modified:   include/linux/wait.h
        modified:   include/linux/ww_mutex.h
        modified:   include/net/gen_stats.h
        modified:   include/net/netns/xfrm.h
        modified:   include/net/sch_generic.h
        modified:   include/trace/events/sched.h
        modified:   init/Kconfig
        modified:   kernel/Kconfig.locks
        modified:   kernel/Kconfig.preempt
        modified:   kernel/cgroup/cpuset.c
        modified:   kernel/cgroup/rstat.c
        modified:   kernel/cpu.c
        modified:   kernel/debug/kdb/kdb_main.c
        modified:   kernel/entry/common.c
        modified:   kernel/exit.c
        modified:   kernel/fork.c
        modified:   kernel/futex.c
        modified:   kernel/irq/handle.c
        modified:   kernel/irq/manage.c
        modified:   kernel/irq/spurious.c
        modified:   kernel/irq_work.c
        modified:   kernel/kexec_core.c
        modified:   kernel/ksysfs.c
        modified:   kernel/kthread.c
        modified:   kernel/locking/Makefile
        modified:   kernel/locking/lockdep.c
        modified:   kernel/locking/rtmutex-debug.c
        modified:   kernel/locking/rtmutex-debug.h
        modified:   kernel/locking/rtmutex.c
        modified:   kernel/locking/rtmutex.h
        modified:   kernel/locking/rtmutex_common.h
        modified:   kernel/locking/rwsem.c
        modified:   kernel/locking/spinlock.c
        modified:   kernel/locking/spinlock_debug.c
        modified:   kernel/notifier.c
        modified:   kernel/panic.c
        modified:   kernel/printk/Makefile
        deleted:    kernel/printk/internal.h
        modified:   kernel/printk/printk.c
        deleted:    kernel/printk/printk_safe.c
        modified:   kernel/ptrace.c
        modified:   kernel/rcu/Kconfig
        modified:   kernel/rcu/rcutorture.c
        modified:   kernel/rcu/tree.c
        modified:   kernel/rcu/update.c
        modified:   kernel/sched/core.c
        modified:   kernel/sched/cpudeadline.c
        modified:   kernel/sched/cpupri.c
        modified:   kernel/sched/cputime.c
        modified:   kernel/sched/deadline.c
        modified:   kernel/sched/fair.c
        modified:   kernel/sched/features.h
        modified:   kernel/sched/rt.c
        modified:   kernel/sched/sched.h
        modified:   kernel/sched/swait.c
        modified:   kernel/sched/topology.c
        modified:   kernel/signal.c
        modified:   kernel/smp.c
        modified:   kernel/softirq.c
        modified:   kernel/stop_machine.c
        modified:   kernel/time/hrtimer.c
        modified:   kernel/time/tick-sched.c
        modified:   kernel/time/timer.c
        modified:   kernel/trace/blktrace.c
        modified:   kernel/trace/trace.c
        modified:   kernel/trace/trace.h
        modified:   kernel/trace/trace_branch.c
        modified:   kernel/trace/trace_event_perf.c
        modified:   kernel/trace/trace_events.c
        modified:   kernel/trace/trace_events_inject.c
        modified:   kernel/trace/trace_functions.c
        modified:   kernel/trace/trace_functions_graph.c
        modified:   kernel/trace/trace_hwlat.c
        modified:   kernel/trace/trace_irqsoff.c
        modified:   kernel/trace/trace_kprobe.c
        modified:   kernel/trace/trace_mmiotrace.c
        modified:   kernel/trace/trace_output.c
        modified:   kernel/trace/trace_sched_wakeup.c
        modified:   kernel/trace/trace_syscalls.c
        modified:   kernel/trace/trace_uprobe.c
        modified:   kernel/workqueue.c
        modified:   lib/Kconfig.debug
        modified:   lib/bug.c
        modified:   lib/cpumask.c
        modified:   lib/debugobjects.c
        modified:   lib/dump_stack.c
        modified:   lib/irq_poll.c
        modified:   lib/locking-selftest.c
        modified:   lib/nmi_backtrace.c
        modified:   lib/scatterlist.c
        modified:   lib/smp_processor_id.c
        modified:   lib/test_lockup.c
        modified:   mm/Kconfig
        modified:   mm/highmem.c
        modified:   mm/memcontrol.c
        modified:   mm/page_alloc.c
        modified:   mm/shmem.c
        modified:   mm/slab.c
        modified:   mm/slab.h
        modified:   mm/slub.c
        modified:   mm/vmalloc.c
        modified:   mm/vmstat.c
        modified:   mm/workingset.c
        modified:   mm/z3fold.c
        modified:   mm/zsmalloc.c
        modified:   mm/zswap.c
        modified:   net/Kconfig
        modified:   net/core/dev.c
        modified:   net/core/gen_estimator.c
        modified:   net/core/gen_stats.c
        modified:   net/core/sock.c
        modified:   net/ipv4/inet_hashtables.c
        modified:   net/ipv6/inet6_hashtables.c
        modified:   net/sched/sch_api.c
        modified:   net/sched/sch_generic.c
        modified:   net/sunrpc/svc_xprt.c
        modified:   net/xfrm/xfrm_state.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        include/asm-generic/kmap_size.h
        include/linux/highmem-internal.h
        include/linux/mutex_rt.h
        include/linux/rbtree_type.h
        include/linux/rwlock_rt.h
        include/linux/rwlock_types_rt.h
        include/linux/rwsem-rt.h
        include/linux/spinlock_rt.h
        include/linux/spinlock_types_nort.h
        include/linux/spinlock_types_raw.h
        include/linux/spinlock_types_rt.h
        include/net/net_seq_lock.h
        kernel/locking/mutex-rt.c
        kernel/locking/rwlock-rt.c
        kernel/locking/rwsem-rt.c
        localversion-rt

方法1开启了PREEMPT_RT后,还可以继续打RT补丁。

方法1和方法2得出的PREEMPT_RT具体异同待研究…

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值