From owner-freebsd-arch@FreeBSD.ORG Tue Apr 28 02:34:08 2015 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 488993E0; Tue, 28 Apr 2015 02:34:08 +0000 (UTC) Received: from mail-wg0-x229.google.com (mail-wg0-x229.google.com [IPv6:2a00:1450:400c:c00::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D81F210CC; Tue, 28 Apr 2015 02:34:07 +0000 (UTC) Received: by wgso17 with SMTP id o17so135659293wgs.1; Mon, 27 Apr 2015 19:34:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=4GG0lUEEMlCsfoUhPKIrpbqLcfVpZ6YgUj9kAX+Q3j4=; b=EsUuRKNEamy+KrisMIA4Ax1PMjk91fzPWGqapdn2m7aeS6sKt87b+fNbrJoCYEDhtH SxmhTlOS6cbhatxldzQA1mMYJRszE9ky50sxnREfrEFlxET0x8A+qDNh80c/MqbI7wMF GT6WQZjiHUMs6N/rDZGI8zicBB7RHq/ZkNmpnN3JDeygB8dVftN1cPupx8e7QPz32IZS 2sf/u9mezRiagVhR9rbWVedYUjrJvLDbBtY+e0one0pnw1HZYGgjshr3hVBNOzr0rYgp JMNud+zoW97SYhZUAbJVXhOmeaNqrT77srFvdsPEweU/L7AmahDpZm1IKxswY4etQW1s AazQ== X-Received: by 10.194.222.197 with SMTP id qo5mr27446540wjc.142.1430188446430; Mon, 27 Apr 2015 19:34:06 -0700 (PDT) Received: from localhost.localdomain (ip-89-102-11-63.net.upcbroadband.cz. [89.102.11.63]) by mx.google.com with ESMTPSA id fo7sm14118352wic.1.2015.04.27.19.34.05 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Apr 2015 19:34:05 -0700 (PDT) From: Mateusz Guzik To: freebsd-arch@freebsd.org Cc: Mateusz Guzik Subject: [PATCH 0/2] generalised cow per-thread structs Date: Tue, 28 Apr 2015 04:34:01 +0200 Message-Id: <1430188443-19413-1-git-send-email-mjguzik@gmail.com> X-Mailer: git-send-email 1.8.3.1 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Apr 2015 02:34:08 -0000 From: Mateusz Guzik struct ucred is managed per thread as follows: setuid and the like updated the pointer in struct proc on kernel<->userspace boundary it is checked whether the thread needs updating This scheme is useful for other structures as well, so this patch generalises it by introducing a counter which is compared instead. This prevents introduction of further comparisons as such structures are added. The first patch just adds convenience funcs and adjusts cred handling to use it. The second patch implements lockless resource limits. The bigger goal concerns struct filedesc - the plan is to split it to fd part and vnode part. The latter is seldomly modified, se could be accessed locklessly and with further effort can save some refs/unrefs on vnodes since we will be sure they cannot go away. Mateusz Guzik (2): Generalised support for copy-on-write structures shared by threads. Implement lockless resource limits. contrib/binutils/ld/emultempl/spu_ovl.o | Bin 1432 -> 0 bytes sys/amd64/amd64/trap.c | 4 +- sys/arm/arm/trap-v6.c | 4 +- sys/arm/arm/trap.c | 11 +++-- sys/i386/i386/trap.c | 4 +- sys/kern/imgact_elf.c | 13 +++--- sys/kern/init_main.c | 8 ++-- sys/kern/kern_descrip.c | 24 +++++----- sys/kern/kern_event.c | 6 +-- sys/kern/kern_exec.c | 4 +- sys/kern/kern_fork.c | 7 ++- sys/kern/kern_kthread.c | 2 +- sys/kern/kern_proc.c | 7 +-- sys/kern/kern_prot.c | 5 ++- sys/kern/kern_resource.c | 77 +++++++++++++++++++------------- sys/kern/kern_sig.c | 2 +- sys/kern/kern_syscalls.c | 3 ++ sys/kern/kern_thr.c | 6 +-- sys/kern/kern_thread.c | 49 ++++++++++++++++++-- sys/kern/subr_syscall.c | 4 +- sys/kern/subr_trap.c | 4 +- sys/kern/subr_uio.c | 4 +- sys/kern/sysv_shm.c | 4 +- sys/kern/tty_pts.c | 4 +- sys/kern/uipc_sockbuf.c | 4 +- sys/kern/vfs_vnops.c | 7 ++- sys/powerpc/powerpc/trap.c | 4 +- sys/sparc64/sparc64/trap.c | 4 +- sys/sys/proc.h | 14 +++++- sys/sys/resourcevar.h | 9 ++-- sys/sys/vnode.h | 2 +- sys/vm/swap_pager.c | 4 +- sys/vm/vm_map.c | 14 +++--- sys/vm/vm_mmap.c | 34 +++++++------- sys/vm/vm_pageout.c | 2 +- sys/vm/vm_unix.c | 8 ++-- 36 files changed, 208 insertions(+), 154 deletions(-) delete mode 100644 contrib/binutils/ld/emultempl/spu_ovl.o -- 2.3.6