Received: by 10.223.164.202 with SMTP id h10csp4064118wrb; Tue, 28 Nov 2017 23:50:35 -0800 (PST) X-Google-Smtp-Source: AGs4zMbkpYVDYXIF0Zj4O0PLpJyY4yRRznHn8xIU8t/5eHY+xrXP0bKkfA5SoGQAui39w+4S/PcO X-Received: by 10.101.96.1 with SMTP id m1mr1961291pgu.38.1511941835836; Tue, 28 Nov 2017 23:50:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511941835; cv=none; d=google.com; s=arc-20160816; b=JZfw5yCNx6TuCB5FhZWIH38avdEu2G6+VrutzHoRXUYRpW2UZmKyfz+tQn0clO3NEr hFMZNY3eAdLXNXDd019eiTSknuoLcQe32nPeOCw6tugng5Y45iEJt1diQ0WSdH119f9h 8JRsxZZV4B7GUE8RpnpHQOnooorvFY+XmFUOdWvHq5Axnp7HYdLxcqeUDDFbFicrVYkq J+tNC0z2tvR+TeJqJIpwkWRt0DJxQb1AkU0BriaFsOw7I6A5l2aKsULIIRGWAKfI0mas b4K/QVds03B9SJsTSMZvAoFxR3Yh0fQ5IhFOZBwQZUSNYxbg1gwgYhFWt+nhC3TqJrIn H4sA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature :arc-authentication-results; bh=PKrntkm8fHAZ7WhSFj2Selvo94sTWsKQiDj0qaomU9k=; b=BtAL/Eb8Xk87pLzISe/3Az44c427YO7Wk667LdLmlodvk6sX8P4DXoT41ov1A6czvh 1CsUzVeO4H3eYYCyLE62bdVTnDSDdXrPaBoDFm3VXrm5pXy+MuMptJSu2oAQBXOUhpEZ qodiLwWisme0MMra2qXdQtK8DEp0Cz1HVOdZnoisf2Qhqi4NLMaoOJuQ8Zzy2c3DB7hw K667TbwtN4GiRuh5G7gQELYg8d6E/ge6L6XXBxjrnONTE21su70xfLkAzYRCTJhz2U3G QEqw39MHqvg80cSU2vRoQFNuEk3Xim28JzA7xKbUkxiAe4aXaLdJrRFTy7KTrwI7Hao8 qM/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@virtuozzo.com header.s=selector1 header.b=TQ02eb0F; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m32si870579pld.667.2017.11.28.23.50.25; Tue, 28 Nov 2017 23:50:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@virtuozzo.com header.s=selector1 header.b=TQ02eb0F; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752350AbdK2HnI (ORCPT + 71 others); Wed, 29 Nov 2017 02:43:08 -0500 Received: from mail-eopbgr40132.outbound.protection.outlook.com ([40.107.4.132]:63917 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751689AbdK2HnF (ORCPT ); Wed, 29 Nov 2017 02:43:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=IyjAYx/J7IY+q9f1zwRr/lq5T4w8Qbj6E84ROnpDHA8=; b=TQ02eb0FZ8DtVWSeAt6QO9EXfGKZALd1w5wGbp7y3F1wITAxMIawLhD/eqEg1ILPt8Zhvvtv0+66baPnWhKiwdj4CUxey7MgWrvviIhrj3ge4kmmgfiPc78V510mxsTkRKpCfcjpW3KrN4omkzPEy168zefRltoIjHlSDUe/9ok= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=avagin@virtuozzo.com; Received: from outlook.office365.com (73.140.212.29) by AM4PR08MB0739.eurprd08.prod.outlook.com (2a01:111:e400:59ed::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Wed, 29 Nov 2017 07:42:56 +0000 Date: Tue, 28 Nov 2017 23:42:46 -0800 From: Andrei Vagin To: Andrew Morton Cc: Mike Rapoport , Alexander Viro , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, criu@openvz.org, Arnd Bergmann , Pavel Emelyanov , Michael Kerrisk , Thomas Gleixner , Josh Triplett , Jann Horn , Greg KH , Andrei Vagin Subject: Re: [PATCH v4 2/4] vm: add a syscall to map a process memory into a pipe Message-ID: <20171129074245.GA32319@outlook.office365.com> References: <1511767181-22793-1-git-send-email-rppt@linux.vnet.ibm.com> <1511767181-22793-3-git-send-email-rppt@linux.vnet.ibm.com> <20171127154249.39e60ecf72019216f2f1782d@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20171127154249.39e60ecf72019216f2f1782d@linux-foundation.org> User-Agent: Mutt/1.9.1 (2017-09-22) X-Originating-IP: [73.140.212.29] X-ClientProxiedBy: CY4PR2201CA0020.namprd22.prod.outlook.com (2603:10b6:910:5f::30) To AM4PR08MB0739.eurprd08.prod.outlook.com (2a01:111:e400:59ed::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 71079bfb-27a8-4bb8-09bc-08d536fcd084 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603266);SRVR:AM4PR08MB0739; X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0739;3:gijjRq1G2RCHfFI/NgO6oAd73AUkU6cLEgteHdlZaC7N1Q4FMEsZa9GCQ+YHkvfH5koU4uQ3Y/t2lAgRnj7XW3Wv78L54V3v2GcfZGx+rWg3s1Wu4sKpzulVso8n7P5fsmo0rUzBM5yhVtXMciqyNPeLGXZJxsSjaxMHyNk2i4zhiyLT8Yz7dujvBvWYQUlmvBkSUlWJDjI/eaWZl0nDxNSjO0eLahsuy2ZVJa93vkeGUdeA8ZtArOpVdHStursF;25:rTr1ickRTRO6p2D10C6ewD+Qbzk8Tji87otteG7uXrmuQwleF6XqQHVN0kYPrJVlBF70Dl/oMIhmXPehoQ+gHCXklUB/baCPshClpz8QOsC96UDSZU31orG6y6oF2Epk6WJoYZLSLlN/2lnQTxAYyPqagNo6TyvqSwHdewFHcBr+1weJbxwG7LGagbNRpGdn+Ee7sUfipPcxIJ3+eQqMlIUWNXcaQ0aVP0BDZmZnkyGiy7NmcVLz4EXIR4W+jzQUSRt42EJ4hXuZp+MNKC8YNunIjwNv52waMtlSkIt3hYUM9jLmplpYhum3ZQHn4p7zzHrO+yayCi7ubZ/171wV1Q==;31:4/M9/H2SrZgggudVeYZqu5rHoEpNKIgjc2ScjtpeOqBHnATKHjWP9ahYeCH8ZUIZpwD9ZGrGDvN+qGtnBnQMd6UIb12dWNXa3xVSurOy9DOm8IH5M5jVFcYhFJW+EbTNxTsivVWdwB4wdpdAHg6U1HDdvZBX5PrLhLC7LUWyaOihXl3Q4Yc6NwOo79JCR6QFf2osn250CakuP9k/UCy4qpixmgdYroIpYMS5q9OQ7KY= X-MS-TrafficTypeDiagnostic: AM4PR08MB0739: X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0739;20:QuGiKJ9WxH8LIj4QacvfIPfwHGwsUJ77QbnACibcnZWsswh66XMysO9ONFBqLSifiUrVjV2uV1beOBYzziuD6KLz/eT+b9j4SHZUrNL67hcbTh0YuOELaJ2cvnGbWhBm+X5ncJI5EFP7I/cgCSWanl4inN3sFX1zBbeILRB3I7E1WKJFzzIN2fPnE+8wyhpbYL19LJAtgzBM4ASHmppvt/Z57Qf9ALRgP/eT4PXhWKBiSjBg89AivvwZVax5Axg1XdJw3O/Gxh8Jh7Ttpka7e9z2HeNuNfFNWEaySVOcr1xmIXeahlLoOBXoVdYx0K63T6UOmfuq+bCG0wTazAV3u1r7nH9Bj2mojrz6ZHr/E+/0JA1LqzcTrUy69maZCRMEmwTbRrXZanRAiHK3dthOp1jw/VOvxS0qLktPNsAAc0s=;4:zOVcTWRxAcsGZJ6xwaVJifzKQfxuTZmRYGi3RwxY3Y6SFyc1fD3p6DG0Y39C58PCXOVOD5X9xldemHkAPZxjMDRmlnuPQoR3ALYKpGuuEu7t587JhyBGhg4aK6iMUBKfOtZC+U/xve9x5xl5RZyRlfhib97YM2ZjelfePfkSI7bNDLb/0ZRBxIBC/TY2QxdVUFi2QDVJrzaDnINhtTS1IKW5kpMv2zGhylB+Tkx0KRP4y2bdxKfeFs0zh2TtnGxc0dSw6WOzimiJRUW5pkT1tiD9VMnyvuKoSXt7wbXFatOAVznBlTnHT3gJ3PJE21v8ctmDRzLzE3nB6G512PfqqY3FZmshCSTOWvuQMk1pb2mT/LrTtq6TiPqjODz7HLw+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(190756311086443)(278428928389397)(104084551191319); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231022)(6041248)(20161123562025)(20161123560025)(20161123555025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:AM4PR08MB0739;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM4PR08MB0739; X-Forefront-PRVS: 05066DEDBB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(366004)(189002)(199003)(24454002)(305945005)(7736002)(53936002)(54906003)(39060400002)(189998001)(6246003)(50466002)(23686003)(107886003)(16526018)(5890100001)(101416001)(5660300001)(76176999)(54356999)(50986999)(6506006)(55016002)(53416004)(8936002)(9686003)(97736004)(1076002)(106356001)(105586002)(69596002)(68736007)(8676002)(2870700001)(81166006)(2906002)(81156014)(66066001)(33656002)(47776003)(6116002)(7416002)(52116002)(83506002)(316002)(6666003)(229853002)(7696005)(3846002)(25786009)(478600001)(86362001)(2950100002)(58126008)(4326008)(6916009)(18370500001);DIR:OUT;SFP:1102;SCL:1;SRVR:AM4PR08MB0739;H:outlook.office365.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;AM4PR08MB0739;23:uR0UtdBdFzbFB96fzfFEH2xLyAklYrXGyByX5qn60s8?= =?koi8-r?Q?f63m8N6PDK9Zl0txheUZG3BSdR00/Qryo9MTdd8nFznQK++rMRAfGXrugKTNvS?= =?koi8-r?Q?+qHw1beL26+eUfLgoKqP0mNT8PUkGPY5UsrKGaRQkCE1BaONNaokWdBM6Eul32?= =?koi8-r?Q?MttqxIyCHQdbJgPYtsJFFNWjq7ZIyfxJiZ9ri/d0Toxcs+1hrwME/Swd0dK1Dy?= =?koi8-r?Q?wT1I/8PoIvrjEgn7RkZt+POgUARbbCzcx2cwAc8gyJSzjQsDZ38PsA7l/zKuob?= =?koi8-r?Q?46ohFE9ZM296DaleRFKjiFKRICclBHIIUJbelOwdLPNZU2IZjNHTBUr/tEELvZ?= =?koi8-r?Q?/yRGQuib2aSjUKMjB+3LgX1Vs/CpQWIrV/SC+PoO+/ZXTGXtBghcmfzcd+f1Dp?= =?koi8-r?Q?bqOTHeQODLcgII2xBWHKdWzjzZMxmyJlRzQd52mn4KqzijHsqZ9cJMAdUjGGpK?= =?koi8-r?Q?yiH13Ed+IsDtcJlY0ChXSadwLtJtyu/1ySbmU9nkHrwBfKvGW66YD8jA3kGo3M?= =?koi8-r?Q?csfOwm4zACdrJZ2ZOZGvz+0Q+pHOx8qd9Bia8Ms7Kizvb9h5uh/KzfTM93a8PB?= =?koi8-r?Q?n/wJwE0WpnGuIweH17Soo8r4k0h99296mnDWo5D6L0Zb20V55qX9AvHTDAGA/3?= =?koi8-r?Q?D8XRH6xnuIGLINufPczyvMOA4zLVR4OpWbkMYdrCUomLPFVGnemfTlWBU6sR0e?= =?koi8-r?Q?MtRFJ+IiKUiPQAIDZFihCNGRZfiR2DIby42r0NReIlBFDJoduX3iKFW9EAaEip?= =?koi8-r?Q?jggY4XFaq2f0f61DwE49z4VNRS4YyrBoMv582QZLotxtmcq61iNsneU4Y1CD+2?= =?koi8-r?Q?okmjkfqALe3JdYLsqm/uPxO5BvxEu4bg5dngVFntav2kVc6Qmc1tNn1mb2Q0sQ?= =?koi8-r?Q?9zzx/v9tajDKEWfuBeAhY6n78ZMuIpXEe5JIvNZzLUiKbcCwx9m/3dyLxzNOoS?= =?koi8-r?Q?c+csoEt2eSGqa1ADnjZLGiUZ6xkpMmv9kvDqbpZPvYIShGa7w3ZhSdMh7QZsft?= =?koi8-r?Q?Vdz+3y+EPBGzfvkcopG23/HSgaD5298Tb3pI+Vy+j2Zt9F+BzmhuUt8PlMRvQ2?= =?koi8-r?Q?AImz4Yg2AWeShBW/ua1ZS/VR3d0LRYj/02iuwYCXkSU6s8074nOcbwev2+wqiw?= =?koi8-r?Q?eb0GEzQ5Y/O5fqIq4SK7vVC5v1Mda4MupdQM74+tOcBRnAjG6Eaxye8DaKwOoA?= =?koi8-r?Q?KVrBCmCWPRgxzKS3ZrI+XnNNJtrHswYRaJrwoQSHXgI+rTsILlSljU+st9MXzA?= =?koi8-r?Q?g2ctCeYhAmDoKve5EFTnmVpxhRqPE3gh+uzLe1qHQibk1gvATQVHzaPNFv/VmF?= =?koi8-r?Q?Q/fz/L4Ux7gDRcl4YJXIV6Hmam1TNPm2+N+EukD89E=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0739;6:HTkP+IiK/R7wl3hd0+0SFJ2IBlq+7q0nckkK43BC+GxQ/TXLaa14oYu3TINw2ZCAbHMyOtm8cyjOPn9Jj2A6GwjS8ar5ksJqODrmd8J1i8Na6GxtB50UQSe66ymYb35z9Eu7suRM47Lc//AUkASn9xJHFngEr+5vhlWm+nwjy2CTWBoAOb/7sQYpLSFH58m3s9K21b4eh85C3TkYln0LEMxpJ+DSAKgEWa1THe848e/8/E5oBtjKVbkmgG2/3N2O2pdlqMz8xTIV2+Aghe23VVSJ0kPtpJGC4u5mJ/5EbUsB3NET1xhJAWY44Jm3rk9Q6y4+6AsKc1k2+WZ4Ha+FHjToT1lQJgcRetea3tARgHM=;5:lqA28MVtFUAVv18bQIbY1HW4+L5qK/DX5704t5SwQ6h2OqcPo/SvlFXCCXRNGp/bFv/2OuoUXDGzYBAtgjTmnEVznHT7qC8i+IYtT/Q4+D+ohU/zud81badYRHIR7l0UReiHPJuu+huBS5y8blw9rVUt+SxECAyu0fjssUaZJ7k=;24:jeMpwmW9j3Hjd2fdM3n8mF42cnLsFVoGMHcYXOLL7uMF4z+1rOXVqhr3IAPsHsiPwpfUuVZul9944lPZpqPmzAMMWI9wmywAyRpOFXl9upA=;7:GIe++cWbRF0zm6wCQp7jnXRPSMeFZBLXqVmuy8+yWczfdfZIl+RJWENrERccaYaALrsXKEaJ1kby4W0FGGWugSDuupwAAWd2IfGy384H/eyDGFTvOYSPSvZSTtf3hbdOqzdZHQzlxrR2WGlxZA+PQAO3xi5JOOSntfL1JiYrT+YJ4iLiNQ2gyKIES3+uqXBnYwMPB0MmitMys/2Y7Bbviy2grQ38PeuC/kgEh1ky0mHjIl2QmQFky6wzrCfQALqs SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM4PR08MB0739;20:82qGcA0HmuWUb1QNA4Lo6vcQ+3t0BcgGQCmilJGzsAS8quPiykJGDOUWJrUg/bXcOcKkiahrg2LXcCBCxpSLruXKCTpbrs3zkUWKy6shLjl4N1rQnitYvUJ89WwasuA++jgs59cQh21DpYKgvkUhfAAztacrFUSt6Jaj9XQydlY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Nov 2017 07:42:56.8733 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 71079bfb-27a8-4bb8-09bc-08d536fcd084 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB0739 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Nov 27, 2017 at 03:42:49PM -0800, Andrew Morton wrote: > On Mon, 27 Nov 2017 09:19:39 +0200 Mike Rapoport wrote: > > > From: Andrei Vagin > > > > It is a hybrid of process_vm_readv() and vmsplice(). > > > > vmsplice can map memory from a current address space into a pipe. > > process_vm_readv can read memory of another process. > > > > A new system call can map memory of another process into a pipe. > > > > ssize_t process_vmsplice(pid_t pid, int fd, const struct iovec *iov, > > unsigned long nr_segs, unsigned int flags) > > > > All arguments are identical with vmsplice except pid which specifies a > > target process. > > > > Currently if we want to dump a process memory to a file or to a socket, > > we can use process_vm_readv() + write(), but it works slow, because data > > are copied into a temporary user-space buffer. > > > > A second way is to use vmsplice() + splice(). It is more effective, > > because data are not copied into a temporary buffer, but here is another > > problem. vmsplice works with the currect address space, so it can be > > used only if we inject our code into a target process. > > > > The second way suffers from a few other issues: > > * a process has to be stopped to run a parasite code > > * a number of pipes is limited, so it may be impossible to dump all > > memory in one iteration, and we have to stop process and inject our > > code a few times. > > * pages in pipes are unreclaimable, so it isn't good to hold a lot of > > memory in pipes. > > > > The introduced syscall allows to use a second way without injecting any > > code into a target process. > > > > My experiments shows that process_vmsplice() + splice() works two time > > faster than process_vm_readv() + write(). > > > > It is particularly useful on a pre-dump stage. On this stage we enable a > > memory tracker, and then we are dumping a process memory while a > > process continues work. On the first iteration we are dumping all > > memory, and then we are dumpung only modified memory from a previous > > iteration. After a few pre-dump operations, a process is stopped and > > dumped finally. The pre-dump operations allow to significantly decrease > > a process downtime, when a process is migrated to another host. > > What is the overall improvement in a typical dumping operation? > > Does that improvement justify the addition of a new syscall, and all > that this entails? If so, why? In criu, we have a pre-dump operation, which is used to reduce a process downtime during live migration of processes. The pre-dump operation allows to dump memory without stopping processes. On the first iteration, criu pre-dump dumps the whole memory of processes, on the second iteration it saves only changed pages after the first pre-dump and so on. The primary goal here is to do this operation without a downtime of processes, or as maximum this downtime has to be as small as possible. Currently when we are doing pre-dump, we do next steps: 1. stop all processes by ptrace 2. inject a parasite code into each process to call vmsplice 3. read /proc/pid/pagemap and splice all dirty pages into pipes 4. reset the soft-dirty memory tracker 5. resume processes 6. splice memory from pipe to sockets But this way has a few limitations: 1. We need to inject a parasite code into processes. This operation is slow, and it requires to stop processes, so we can't do this step many times. As result, we have to splice the whole memory to pipes at once. 2. A number of pipes are limited, and a size of each pipe is limited A default limit for a number of file descriptors is 1024. �The reliable maximum pipe size is 3354624 bytes. � � � � pipe->bufs = kcalloc(pipe_bufs, sizeof(struct pipe_buffer), � � � � � � � � � � � � � � �GFP_KERNEL_ACCOUNT); so the maximum pipe size can be calculated by this formula: (1 << PAGE_ALLOC_COSTLY_ORDER) * PAGE_SIZE / sizeof(struct kernel_pipe_buffer)) * PAGE_SIZE) This means that we can dump only 1.5 GB of memory. The major issue of this way is that we need to inject a parasite code and we can't do this many times, so we have to splice the whole memory in one iteration. With the introduced syscall, we are able to splice memory without a parasite code and even without stopping processes, so we can dump memory in a few iterations. > > Are there any other applications of this syscall? > For example, gdb can use it to generate a core file, it can splice memory of a process into a pipe and then splice it from the pipe to a file. This method works much faster than using PTRACE_PEEK* commands. This syscall can be interesting for users of process_vm_readv(), in case if they read memory to send it to somewhere else. process_vmsplice() may be useful for debuggers from another side. process_vmsplice() attaches a real process page to a pipe, so we can splice it once and observe how it is being changed many times. Thanks, Andrei From 1585264790178829023@xxx Mon Nov 27 23:45:15 +0000 2017 X-GM-THRID: 1585202888842700460 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread