Upload
yandex
View
9.445
Download
0
Embed Size (px)
DESCRIPTION
Только что вышедшая FreeBSD 10 содержит в себе много нововведений, таких как смена компилятора и системы пакетирования приложений, расширенная поддержка виртуализации, а также множество радикальных изменений в уже существующих подсистемах. В докладе Глеб коснётся наиболее важных новостей и расскажет, чего следует ожидать тем, кто поспешит перейти на новую стабильную версию.
Citation preview
What’s new in FreeBSD 10?
Gleb [email protected]
ruBSD 2013YandexMoscow
December 14, 2013
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 1 / 27
Introduction
Two years of development
head
stable/10stable/9
23 September 2011 10 October 2013
10.0-RC1 available now10.0-RELEASE planned for 2 January 2014
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 2 / 27
Introduction
Two years of development
head
stable/10stable/9
23 September 2011 10 October 2013
10.0-RC1 available now10.0-RELEASE planned for 2 January 2014
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 2 / 27
Introduction
Outline
1 Userland changesPackaging systemToolchainDevelopers toolsDNS toolsOther userland updates
2 Kernel: virtualizationbhyveguest improvements
3 Kernel: ARM port
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 3 / 27
Introduction
Outline
4 Kernel: securitycapsicum(4) update/dev/random improvements
5 Kernel: general improvementscallout(9) new generationunmapped I/Omemory managementatomic close-on-exec
6 Kernel: I/O and storageimprovementsGEOM3rd party filesystems
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 3 / 27
Introduction
Outline
7 Kernel: networkingchangescarppacket filters
8 Conslusionlooking forward to FreeBSD 11
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 3 / 27
Userland changes Packaging system
New generation packaging system
pkg(1)
Replaces pkg_tools in FreeBSD 10.0Updates packages from remote repositoryIs developed as a library + command line frontend
Don’t miss section at 11:40 by Vsevolod Stakhov!
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 4 / 27
Userland changes Packaging system
New generation packaging system
pkg(1)
Replaces pkg_tools in FreeBSD 10.0Updates packages from remote repositoryIs developed as a library + command line frontend
Don’t miss section at 11:40 by Vsevolod Stakhov!
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 4 / 27
Userland changes Toolchain
Compiler change
LLVM/Clang 3.3 is default compiler(amd64, arm and i386)
Why?BSD licensed (gcc > 4.2.1 is GPLv3)
Fully C++11 compliant. Includes LLVM libc++.Always cross compiler.
We still support gcc 4.2+ to build tier 2 arches.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 5 / 27
Userland changes Toolchain
Compiler change
LLVM/Clang 3.3 is default compiler(amd64, arm and i386)
Why?BSD licensed (gcc > 4.2.1 is GPLv3)
Fully C++11 compliant. Includes LLVM libc++.Always cross compiler.
We still support gcc 4.2+ to build tier 2 arches.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 5 / 27
Userland changes Toolchain
Compiler change
LLVM/Clang 3.3 is default compiler(amd64, arm and i386)
Why?BSD licensed (gcc > 4.2.1 is GPLv3)
Fully C++11 compliant. Includes LLVM libc++.Always cross compiler.
We still support gcc 4.2+ to build tier 2 arches.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 5 / 27
Userland changes Toolchain
Toolchain
Moving towards external toolchain.
Portable make(1) imported from NetBSDTools updated:
patch(1): GNU BSD licensed fork of original Larry Wallsort(1): GNU own implementationbyacc for yacc(1)flex for lex(1)
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 6 / 27
Userland changes Toolchain
Toolchain
Moving towards external toolchain.Portable make(1) imported from NetBSD
Tools updated:patch(1): GNU BSD licensed fork of original Larry Wallsort(1): GNU own implementationbyacc for yacc(1)flex for lex(1)
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 6 / 27
Userland changes Toolchain
Toolchain
Moving towards external toolchain.Portable make(1) imported from NetBSDTools updated:
patch(1): GNU BSD licensed fork of original Larry Wallsort(1): GNU own implementationbyacc for yacc(1)flex for lex(1)
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 6 / 27
Userland changes Developers tools
Developers tools
CVS -> subversion (lite)ATF/kyua from NetBSDWork in progress: gdb -> lldb
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 7 / 27
Userland changes DNS tools
DNS tools
Recursive resolver & toolsBIND -> unbounddig(1) -> drill(1)new host(1) implementationnslookup
LDNS libraryFeature rich API, providing control over recursion,DNSSEC, TSIG, etc.Utilized by OpenSSH, drill(1)
Plan for FreeBSD 11: caching, validating, secureresolver library with standard API
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 8 / 27
Userland changes DNS tools
DNS tools
Recursive resolver & toolsBIND -> unbounddig(1) -> drill(1)new host(1) implementationnslookup
LDNS libraryFeature rich API, providing control over recursion,DNSSEC, TSIG, etc.Utilized by OpenSSH, drill(1)
Plan for FreeBSD 11: caching, validating, secureresolver library with standard API
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 8 / 27
Userland changes DNS tools
DNS tools
Recursive resolver & toolsBIND -> unbounddig(1) -> drill(1)new host(1) implementationnslookup
LDNS libraryFeature rich API, providing control over recursion,DNSSEC, TSIG, etc.Utilized by OpenSSH, drill(1)
Plan for FreeBSD 11: caching, validating, secureresolver library with standard API
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 8 / 27
Userland changes Other userland updates
Other userland updates
freebsd-version(1) tool introducedlibyaml added to base
Citrus iconv(3) in libcnewest jemalloc 3.4.1 in libcnvi editor supports wide character localeswpa_supplicant/hostapd updated to 2.0OpenSSH updated to 6.4OpenSSL updated to 1.0.1e
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 9 / 27
Userland changes Other userland updates
Other userland updates
freebsd-version(1) tool introducedlibyaml added to baseCitrus iconv(3) in libcnewest jemalloc 3.4.1 in libc
nvi editor supports wide character localeswpa_supplicant/hostapd updated to 2.0OpenSSH updated to 6.4OpenSSL updated to 1.0.1e
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 9 / 27
Userland changes Other userland updates
Other userland updates
freebsd-version(1) tool introducedlibyaml added to baseCitrus iconv(3) in libcnewest jemalloc 3.4.1 in libcnvi editor supports wide character locales
wpa_supplicant/hostapd updated to 2.0OpenSSH updated to 6.4OpenSSL updated to 1.0.1e
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 9 / 27
Userland changes Other userland updates
Other userland updates
freebsd-version(1) tool introducedlibyaml added to baseCitrus iconv(3) in libcnewest jemalloc 3.4.1 in libcnvi editor supports wide character localeswpa_supplicant/hostapd updated to 2.0OpenSSH updated to 6.4OpenSSL updated to 1.0.1e
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 9 / 27
Userland changes Other userland updates
Installer
bsdinstall features ZFS root installationRemoved old installer sysinstall and auxiliary toolslibdisk, libftpio, sade
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 10 / 27
Kernel: virtualization bhyve
bhyve(4) hypervisor
BSD hyper visor(pronounced as “bee hive”)
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 11 / 27
Kernel: virtualization bhyve
bhyve(4) hypervisor
BSD hyper visor(pronounced as “bee hive”)
Requirements:host is amd64: Intel CPU with VT-xfeature or AMD CPU with AMD-Vfeatureno BIOS provided
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 11 / 27
Kernel: virtualization bhyve
bhyve(4) hypervisor
BSD hyper visor(pronounced as “bee hive”)
Results in:12k lines of code in kernel14k lines of code in userland
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 11 / 27
Kernel: virtualization bhyve
bhyve(4) hypervisor
BSD hyper visor(pronounced as “bee hive”)
Guest OSes supported:FreeBSD, OpenBSDGNU/Linux
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 11 / 27
Kernel: virtualization guest improvements
Guest improvements
Xen and Xen HVM in GENERIC kernelMicrosoft Hyper-V drivers addedVMware VMXNET3 driver added
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 12 / 27
Kernel: ARM port
ARM port
ARM soon to become Tier 1 platformcompiled with clangsuperpages supportEABI by default
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 13 / 27
Kernel: security capsicum(4) update
capsicum(4) update
Capsicum - hybrid capability + UNIX accesscontrol model. Introduced in FreeBSD 9.0.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 14 / 27
Kernel: security capsicum(4) update
capsicum(4) update
Capsicum integrates further into FreeBSD:notions of “capability” and “filedescriptor” mergenew APIs: cap_new(2)cap_rights_limit(2)
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 14 / 27
Kernel: security capsicum(4) update
capsicum(4) update
Capsicum integrates further into FreeBSD:notions of “capability” and “filedescriptor” mergenew APIs: cap_new(2)cap_rights_limit(2)capsicum(4) in GENERIC by defaultsandboxed applications: tcpdump(1),dhclient(8), rwhod(8), kdump(8),hastd(8), auditdistd(8), ctld(8),iscsid(8)
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 14 / 27
Kernel: security capsicum(4) update
capsicum(4) update
Future integration in 10.1-RELEASE:casperd(8) daemonlibcapsicum(3) librarysandboxing a lot of applications
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 14 / 27
Kernel: security /dev/random improvements
better random
Problem: hardware assisted randomness (RDRAND andPadlock) no longer trusted.Solution: run them through Yarrow.
Problem: not enough entropy on early boot.Solution: we can get some from device attach time.
Problem: not enough entropy on first boot.Let bsdinstall save an entropy cookie for future boot.
FreeBSD 11.0 plan: substitute Yarrow with Fortuna.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 15 / 27
Kernel: security /dev/random improvements
better random
Problem: hardware assisted randomness (RDRAND andPadlock) no longer trusted.Solution: run them through Yarrow.
Problem: not enough entropy on early boot.Solution: we can get some from device attach time.
Problem: not enough entropy on first boot.Let bsdinstall save an entropy cookie for future boot.
FreeBSD 11.0 plan: substitute Yarrow with Fortuna.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 15 / 27
Kernel: security /dev/random improvements
better random
Problem: hardware assisted randomness (RDRAND andPadlock) no longer trusted.Solution: run them through Yarrow.
Problem: not enough entropy on early boot.Solution: we can get some from device attach time.
Problem: not enough entropy on first boot.Let bsdinstall save an entropy cookie for future boot.
FreeBSD 11.0 plan: substitute Yarrow with Fortuna.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 15 / 27
Kernel: security /dev/random improvements
better random
Problem: hardware assisted randomness (RDRAND andPadlock) no longer trusted.Solution: run them through Yarrow.
Problem: not enough entropy on early boot.Solution: we can get some from device attach time.
Problem: not enough entropy on first boot.Let bsdinstall save an entropy cookie for future boot.
FreeBSD 11.0 plan: substitute Yarrow with Fortuna.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 15 / 27
Kernel: general improvements callout(9) new generation
callout(9) improvements
callout(9) - kernel subsystem to schedule delayed events.
New improvements:ticklessevent coalescingdirect execution
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 16 / 27
Kernel: general improvements callout(9) new generation
callout(9) improvements
callout(9) - kernel subsystem to schedule delayed events.New improvements:
ticklessevent coalescingdirect execution
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 16 / 27
Kernel: general improvements unmapped I/O
unmapped I/O
Problem: kernel doing I/O on behalf of userland processmaps the I/O region into kernel address space.
Change ofvirtual memory map requires notification of other CPUs.
Solution: unmapped I/O. Required modification of filesystem layer, GEOM classes, disk drivers.
Result: 30% of system CPU time saved in I/O boundtasks.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 17 / 27
Kernel: general improvements unmapped I/O
unmapped I/O
Problem: kernel doing I/O on behalf of userland processmaps the I/O region into kernel address space. Change ofvirtual memory map requires notification of other CPUs.
Solution: unmapped I/O. Required modification of filesystem layer, GEOM classes, disk drivers.
Result: 30% of system CPU time saved in I/O boundtasks.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 17 / 27
Kernel: general improvements unmapped I/O
unmapped I/O
Problem: kernel doing I/O on behalf of userland processmaps the I/O region into kernel address space. Change ofvirtual memory map requires notification of other CPUs.
Solution: unmapped I/O. Required modification of filesystem layer, GEOM classes, disk drivers.
Result: 30% of system CPU time saved in I/O boundtasks.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 17 / 27
Kernel: general improvements unmapped I/O
unmapped I/O
Problem: kernel doing I/O on behalf of userland processmaps the I/O region into kernel address space. Change ofvirtual memory map requires notification of other CPUs.
Solution: unmapped I/O. Required modification of filesystem layer, GEOM classes, disk drivers.
Result: 30% of system CPU time saved in I/O boundtasks.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 17 / 27
Kernel: general improvements memory management
memory management changes
Kernel memory maps:vmem(9) generic allocator from NetBSDkernel memory map allocation backed by vmem(9)
Mach VMradix tree instead of splay tree for vm_pages invm_object
UMAperformance/efficiency improvementsper-CPU zoneslog warning when a zone hits limit
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 18 / 27
Kernel: general improvements memory management
memory management changes
Kernel memory maps:vmem(9) generic allocator from NetBSDkernel memory map allocation backed by vmem(9)
Mach VMradix tree instead of splay tree for vm_pages invm_object
UMAperformance/efficiency improvementsper-CPU zoneslog warning when a zone hits limit
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 18 / 27
Kernel: general improvements memory management
memory management changes
Kernel memory maps:vmem(9) generic allocator from NetBSDkernel memory map allocation backed by vmem(9)
Mach VMradix tree instead of splay tree for vm_pages invm_object
UMAperformance/efficiency improvementsper-CPU zoneslog warning when a zone hits limit
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 18 / 27
Kernel: general improvements atomic close-on-exec
atomic close-on-exec
Prevents descriptor leak in presence of threads orsignalsSuggested for future POSIX
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 19 / 27
Kernel: I/O and storage improvements
storage changes
NAND flash supportNAND controller/chip/bus APIsNAND disk GEOM classNAND file system
Resizinggeneral support of “resize” notion in GEOMresizing of GEOM mirror (in 10.1-RELEASE)growfs(1) works on mounted filesystems
legacy ATA layer removed
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 20 / 27
Kernel: I/O and storage improvements
storage changes
NAND flash supportNAND controller/chip/bus APIsNAND disk GEOM classNAND file system
Resizinggeneral support of “resize” notion in GEOMresizing of GEOM mirror (in 10.1-RELEASE)growfs(1) works on mounted filesystems
legacy ATA layer removed
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 20 / 27
Kernel: I/O and storage improvements
storage changes
NAND flash supportNAND controller/chip/bus APIsNAND disk GEOM classNAND file system
Resizinggeneral support of “resize” notion in GEOMresizing of GEOM mirror (in 10.1-RELEASE)growfs(1) works on mounted filesystems
legacy ATA layer removed
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 20 / 27
Kernel: I/O and storage GEOM
GEOM: work in progress
Targeted for 10.1-RELEASE:
direct dispatch in GEOM instead of two threadsfine grained locking of CAM layer
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 21 / 27
Kernel: I/O and storage GEOM
GEOM: work in progress
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 21 / 27
Kernel: I/O and storage GEOM
GEOM: work in progress
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 21 / 27
Kernel: I/O and storage 3rd party filesystems
FUSE
FUSE moved to base from ports to improve stability
Giant-locked and GPL-contaminated filesystemsremoved from kernel: hpfs, ext2fs, ntfs, reiserfs, coda,xfs, nwfs, portalfs.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 22 / 27
Kernel: I/O and storage 3rd party filesystems
FUSE
FUSE moved to base from ports to improve stabilityGiant-locked and GPL-contaminated filesystemsremoved from kernel: hpfs, ext2fs, ntfs, reiserfs, coda,xfs, nwfs, portalfs.
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 22 / 27
Kernel: networking changes
networking changes
newest Infiniband OFED stacknative iSCSI Target and Initiatoretherswitch(4): embedded Ethernet switch driver
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 23 / 27
Kernel: networking changes
networking changes
ZERO_COPY_SOCKETSsendfile(2) on shared memory fd
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 23 / 27
Kernel: networking changes
networking changes
network byte order throughout the stackcounter(9): raceless and cheap statistic per-CPUcountersIP/TCP/UDP dtrace(1) providers
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 23 / 27
Kernel: networking carp
new carp(4)
CARP isn’t pseudo-interface any more. Redundant addressis configured directly on a real interface.% ifconfig igb0 10.0.0.112/27 vhid 112% ifconfig igb0igb0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:25:90:03:0e:fainet 10.0.0.112 netmask 0xffffffe0 broadcast 10.0.0.127 vhid 112media: Ethernet autoselect (1000baseT <full-duplex>)status: activecarp: BACKUP vhid 112 advbase 1 advskew 0
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 24 / 27
Kernel: networking packet filters
packet filters
pf(4): fork off OpenBSD, bringing in multithreadingipfilter(4): update to 5.1.2 (BSD license pledged)ipfw(4): no significant changes
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 25 / 27
Kernel: networking packet filters
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 26 / 27
Conslusion looking forward to FreeBSD 11
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 27 / 27
Conslusion looking forward to FreeBSD 11
Questions?
Gleb Smirnoff [email protected] What’s new in FreeBSD 10? December 14, 2013 27 / 27