Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756031AbcKWEfF (ORCPT ); Tue, 22 Nov 2016 23:35:05 -0500 Received: from mail-db5eur01on0111.outbound.protection.outlook.com ([104.47.2.111]:33312 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755568AbcKWEfC (ORCPT ); Tue, 22 Nov 2016 23:35:02 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=MPatlasov@virtuozzo.com; Subject: Re: [fuse-devel] fuse: max_background and congestion_threshold settings References: <87oa1g90nx.fsf@thinkpad.rath.org> <64a57faa-d3a6-a209-8728-723ed7f37c2f@virtuozzo.com> <87fumrmdvn.fsf@thinkpad.rath.org> <716677ab-f962-1628-205b-2326219f4487@virtuozzo.com> <877f83mb2v.fsf@thinkpad.rath.org> <7828c809-f699-c16f-a1aa-24ce839547ff@virtuozzo.com> <877f7vcewf.fsf@thinkpad.rath.org> From: Maxim Patlasov CC: , linux-fsdevel , LKML , To: "Nikolaus@rath.org >> Nikolaus Rath" Message-ID: <8484b43a-881e-5da6-f044-9da6597e76db@virtuozzo.com> Date: Tue, 22 Nov 2016 15:24:53 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <877f7vcewf.fsf@thinkpad.rath.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [162.246.95.100] X-ClientProxiedBy: BY2PR06CA0083.namprd06.prod.outlook.com (10.166.106.179) To AM5PR0801MB1842.eurprd08.prod.outlook.com (10.169.247.147) X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1842;2:KENaJCCyj+dRe5aHfLLjAM+w4DTcMbqseesLbAP0kRrbiSVcanHYaCiM5R7r0HjcXVUutaJOCZcoKaQ0nRNzQ5o6Qnohr8ZSEMNddCUT1cwW9OAMacrbASD1mDUbOENpZqTEnFkIjjgKBuD215UclEho0AaQUFKWpMR7MJhxv7E=;3:2Ae25CJnKIage+eVolB+ZbztCWVg6vJBDnJKE51RgVz+4koM63dWb4w+CDpNK7mchWwndmqF2fvVNiDxxwhQ7iHh3Xy21RVgeEtvT8CsvHvlDJtHeaEdYboT/BAsnGBiEC+OSAOlMRkdWDJxC74NQ+R/h9mF7LQ1IVm7+gXycQs=;25:UFPEyiNlInRT0FDuBydwtbEh15aS65nIhKX7H/yvEvbHjdpNjlEWa22oJIxj9c4mcnhPq0DmEWIFJB5Qa8/q+OsKwvtpG+1ueBHMkW/Bn0j5TzwWsPG6+Q65csoi5tGnK9Q7o/LvmIVBwBt2/0pt3tP8Sx4F8xcbhltT+WWT7opsFTwylmbBJmoCvRPZphSWE3hLtPPbQOTuVs/glWtXRVQ8Q5Us+qgVsFlPC0NwawnEYk4L/57PCWHbJxREbvQagSZyee+VPMT6Crud+ShvU2BCtxuzORStpVFlQv9aXVHkyq0ewENLqkMxXG5QsOubc2J3HPaDiBhLokltr/lfnioHbgq3yw9FEIzZcZ96PtjUqhMpMZ6slUahGkEqXSPR1ok3oGXMBiBYMEfaJBjTChgMNNNHspODaH277gULG024il6Pul0XRUMf2CdmozLd0YB6c6QS3eo5tiTi6wCgUA== X-MS-Office365-Filtering-Correlation-Id: 663e9cbd-3096-4c10-8866-08d4132ecbfb X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:AM5PR0801MB1842; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1842;31:5A/iNqyCT+2/1X5KurbqK583Yo4I3F2bUgqH6N4izASgk0cboMxDjTBwqUh7UEuZ4ZbH5VhF/t/77V3IlwcBWgsx7OPVfWd9Hg8EKUKgv3YO5FLPMxlQFjs8ytJh/LxDxtn/Q50T3LBhLtFD+u8FSI6tNXFBYobxjPCaPF83CI0u8eESg5ZQtczEMoyD33RwHfN9e80ZmLNV0r/UN7ClG4UZ3HsDECRNnKuXotAiJHaIQDzsHMkLfuoHskdxoTklYYNIlIyzcxOm9TSl4sWyi0BxTLtVfNmXqzy8RuqOCis=;20:FWqwXNWmzWb2+BDTdopqYr7OjImSzcYraUgCeF13+h3dgV7KXClS4bBiJpDPJ/795bL3Mju317IuIRNmVylqTwLOgztdzuv413pXcWLH7EG+W8Klg/ZVLtjeZo5eCyFUSqlH9KyKIOJHGnmWAfex3IOtT7C1oex5OzgMjbPtP8g= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6045199)(6040307)(6060326)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(6061324)(2016111802025)(6043046);SRVR:AM5PR0801MB1842;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0801MB1842; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1842;4:OuoDKuizFTPKT7KjoMSDQh8JEK8s4POxZYt1tNaPauPWe4d0Bp3cdtnw6imLG3hanGIvVyrou+YKRmeW0J0gSMprcFJlhqoclgAo/L3o9TGqlMCpZVGraYql7wSr0TaEf0Ws+ZBS6rWe8fqwhQPkyPHcIaxEoEnB25JI2Jep/GzOCrGMDY09Uw0NOEoZPtsQAyZ7EVsuNXObnhC6R8oJhaouw2LTZ2Iq7z01ccyAzfB+XyU8TjJ2HOr9KnHAayAoaFIY5VGV7ZSwl4bXkvA0NogWTzODWS9j+zN4jdt3xAg5AX8YK0a/aOEkPZrmAH48LcHBtoH/TVOE78ayaMEIJNBzTsv7RDei4tlBppZUYcfaUOnrHuaLGCRz7n4T7Br5J3DrgN6kXPbMhdGZ6uqIbwTPeG+M3zh1HlY3bJd18hJmO8owC0w1EKec7YjVhvZf2T/xaZuNdvHuQj7mjixd/rDsBtDVX7N+5zFIZgkzkbuPQV7nZyHCmk1i7NTlR5fyZgIbMalRiXpsnwT9rdMPjg== X-Forefront-PRVS: 0134AD334F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(377454003)(189002)(24454002)(199003)(51444003)(2906002)(36756003)(23676002)(83506001)(80792005)(5660300001)(189998001)(2950100002)(7846002)(101416001)(305945005)(7736002)(6666003)(77096005)(66066001)(65956001)(42186005)(47776003)(105586002)(6916009)(31696002)(86362001)(110136003)(50466002)(106356001)(65806001)(31686004)(65826007)(3846002)(97736004)(76176999)(6116002)(92566002)(68736007)(93886004)(54356999)(64126003)(81166006)(50986999)(81156014)(38730400001)(4326007)(8676002)(230700001)(33646002)(4001350100001)(229853002)(7099028);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1842;H:[10.161.30.31];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA4MDFNQjE4NDI7MjM6MDd1azB6UWEyQTNUbnlpUTQ5OXJlbUN5?= =?utf-8?B?ck8yVG1OcmJqVXVrM3Z6Z0NoeGFHdmNLZEl0U1F5WVAvdnZ2RWlvMWxyUDhh?= =?utf-8?B?TUtxTHhXS0tYVml5WWNmVVI0ekh2VDgxTEFWNFZsRWhXZWI5MGYrSzRlcExS?= =?utf-8?B?L0N1SHVHTHNrTmJpU1N4QU5uTVZGZFpFeXlFb1NkbExSb0J2enowa1REamdx?= =?utf-8?B?M0IyMS8wUDU3ZUxXZXNyS2dXanBJa29KaExxcFFlWFRtYnRHTm1IcG5Dc3lN?= =?utf-8?B?ZGRNTFd0eE14UEpVVEJ5TndnY0NaWG93Zk8rRzM5bkRiMXJoUUNwa0llN2M2?= =?utf-8?B?TlRwWThOT2lmc05HbkRsL25wY2hZREFtcU1vM05RM0NWWGVzN2JPSy9saWZ6?= =?utf-8?B?aXpjdFNEOCtFcTVZMDZpNGNnL2svYnpCbTIvaktJbUZJU0I2QnRzUWxXTFhi?= =?utf-8?B?OU5lOTFXM1ZlY2FTUFFjWktXSmk4ek93Yng5VUNEeFFKd3NzSTNzU1FwK1FG?= =?utf-8?B?a051aENRVStvRVVEdk1iZmhBK0FvUDluMG00MTZHbzQwOE1VYi9Zb3lMTExX?= =?utf-8?B?Nm5iRXV5VXNXbms0UDhOT1hHcm9TNzUwZVllUHVrajhRZVN3VUlnbEVQSE5Z?= =?utf-8?B?TDVyZFFieGZ0R1BSMjJodXJuSEZ0RmpEZ1lyS0xOUnVpdGRUN3N0QmJpTkpV?= =?utf-8?B?Snd5WlUyTU4yQ0Zya0hkRnhCakdlQlM4WE4ybGF6eWdBOE5GbWJQYXZkamNu?= =?utf-8?B?K2s2NktQRWRqUEpHWDcycVJ6SGRvOFhRTmpZL0diRDVDUXNyMENLN0NyWkFG?= =?utf-8?B?ZzNHQ1FtN1N4eFBTRmwvUTRlSGFNRUFUamtQVGdaVWExV3RkQ1g4aUtNczdu?= =?utf-8?B?K2RqV1FKK1VlSkRwQmdkcTJmLy82R05IM3RBWlZRa3ZDL0lKc2oxZXUwZmFI?= =?utf-8?B?U0txMWQ3WlVHMWhRY01HR0JzdWdOcVF2b210azJCM3FBNzUra2Z4bTNnSjJL?= =?utf-8?B?NUlseGdMeWkwNTJVVkFDREd4WWhKWXg5V00zMHJDTzgwTzJ3TTFVVlJzSzll?= =?utf-8?B?cVBVU2VBa2ZLd2FIME1XMjlTYkdPRytzNHVSdmVvSCtoS2Q5c2dsWlppSDVU?= =?utf-8?B?Zzh2VUhZYVlRREpabTRPQ3hIRFZaaDhndXNQZ1RQakp2d0RRL1BXZVkrVUhh?= =?utf-8?B?bU4zeFF0OStmbXZMV1Z6UWtJcDBvR0VucUdHRy9oZjZRZCs2U1p5SkJvMXpR?= =?utf-8?B?WW1PRStibzd0d2ZFMnFYOURqblRIaERnS1JKY0UybHJnQ21QVU9jODhiV1NK?= =?utf-8?B?a0VZUnh6eXB0MlBOK2FIZEFGQmI2VU9kK2lJV0hnY1FDWTEyMUlraU04U2Mz?= =?utf-8?B?d2pXUi9BM09LclArMElHTXRKK2VZWEhoMEd5dlRBelpwYmlCT3QrWXFUYUk5?= =?utf-8?B?OUJMV3h2ekI4WEord0UwMzJYV3VjVHBVaUhvb29IT1lCQXk2SVBzWDV4Szgv?= =?utf-8?B?ZWNqNjNiY2lGMk1aY1h5ZXhLVkFJRFdUbzIyWTNNODhZMk1mUWREazYrRFhj?= =?utf-8?B?Y204amFOdU1hbG1aOFladGhadWsyMk56cHFZYjhPT1lLYWdGSjVHbmlpTEdL?= =?utf-8?B?WnByUmZURTVOak9KVHpmTC80Y0dQYXZMNVlkaWNKRC9kU1dWWTZDdnRwL3l3?= =?utf-8?B?RmV4UUtLdTZJUm4razVvN29DVUh2QmV5Q1N6bmRJL3RVYUt2ekVaQzBpMFll?= =?utf-8?B?clV0d1ZaRjEydndUaDVOYU9YMUszbU5UeUY3Nk9EdnNMYUZxVTBoVE9RL2JB?= =?utf-8?B?aHpzL2kyTFJuZ1grMTF4ajVZbFdBR2FQWFZmMHBabnM0YWprR2U4ZFRrd2tQ?= =?utf-8?Q?GXRAqZWIEd66vwieL+rFtMYMQ/XI0+J1F6?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1842;6:xNCblIuPXSb43mtVVXgx//ZLuJ3VfYMMnZupo/s4qVMcY/1bUuzlnmw/ePleCg/CMLXihVB4W9g1rY8JWT4IrLj/0x5wYw0xLsWa3Bax31yzgtY3LHt+rwy5k5gApFw3ypoK3VACJqv0FnmdySzr/ZQ2U8/OueZMnUlpZUHDAyC59RZ4BusUth1Uwp7XsRKAzbn4lkAvI727qZ4bfqTy6DjfGi8uBjWUO6ricBTRW+8xrG1kl5ifOL0ngjtNnFTNm8WMbic2L12/6vFzLtaoRwLmCC6vSJirfuvIVfy1K+7zzlEvPFN8iMkOI2umg85hkG5bZtM50rpheo+BZn3ZM+dFb9YvLp19juRw01d0L8PjzWfaEiNS/bfGbUhr7aE0;5:QB7EeujkJpONAMl1jMNC1aamuc2SAK18+Ryiyl08NXNOdbXAdgLdIGXSn786d/b3tfaz7wS+qLuUxLhynqn39zE636Pru+2YHclrCHQ8Yw8mfPxS8mqnfWMX/kf0Jighbn31Y1oQ/s5mhN3SIE/p1Q==;24:DhRu64g6i0dPIoGA8eIa+q4BJMQnF39YnpXemltE9d4wL3BtwG5n8uTPgqS2DwVla+cf0/0ZSYa9UPTGwg6G7OKGq2bXehpRRcKXR5feN2w= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1842;7:9M7PcoNoz20j9ztiYMdP3dF4TShTmDDeLN2Y2Sg7LKFuw1YfPfijx4bIQihFk4LBolON40rayj6nCPZgr3P3aIOSD9zFJF/eEoXyJ3Z1l+ouOj4cPKWgQYP2Rbd9jX4aKIMrmAcEif7botJ1WPsCG7zqJjDpdUNnuGsGGEkJ4l6HtHd7/ys+WRtThxK+KHnFW59vqldYSfc9ecw7kVkNup1imva1ygu8poYYETXDzm/YefhJT3//nl3LKR9QBduQ+PzWCVEIrBrK0ID/ge/sVng0KN5zEs7u+HbRPutFJCG48q4vVFoqpjyrBvLnyKLnZnFSsEd5C98c73jMUCu9oDFn8IR/RLb5M9vrl3aL2AQ=;20:oWVwBFO0QWiBvHeDN74GHpW+Wn7TQXxNy4w8e5aKhkosk402RkbDUKFLDnubDFpva9EomyqhJ2g3NP0ZzyOdSmVxYebc4uW9s6TXSlvzdz7C/++HgEkvmj5Lm42e2/zwb99VqMlbD+9FlG3ALm5zHzPzXKiZynGo2VSBD669zPY=;23:zV2WYo+2vMRXbxcfkYjRD3cSa+IYvbC9lJZWSN1QGoQyFvZjCDF6g+dsHHTyR2TNviQkZ/7o0opjeZDmLzzYzN9ResdvoUEQ7w8glBXSIAxTvFxY2FvoUqHB4yx6n515OOXzS+OmUcaO0AIxOViK89yJw8+ExA4GM8O9b3w4zAYAZe1vYyvLHAkqQkZjZOhR X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2016 23:25:06.6345 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1842 X-OriginatorOrg: virtuozzo.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3225 Lines: 64 On 11/22/2016 02:45 PM, Nikolaus Rath wrote: > On Nov 16 2016, Maxim Patlasov wrote: >> On 11/16/2016 12:19 PM, Nikolaus Rath wrote: >> >>> On Nov 16 2016, Maxim Patlasov wrote: >>>> On 11/16/2016 11:19 AM, Nikolaus Rath wrote: >>>> >>>>> Hi Maxim, >>>>> >>>>> On Nov 15 2016, Maxim Patlasov wrote: >>>>>> On 11/15/2016 08:18 AM, Nikolaus Rath wrote: >>>>>>> Could someone explain to me the meaning of the max_background and >>>>>>> congestion_threshold settings of the fuse module? >>>>>>> >>>>>>> At first I assumed that max_background specifies the maximum number of >>>>>>> pending requests (i.e., requests that have been send to userspace but >>>>>>> for which no reply was received yet). But looking at fs/fuse/dev.c, it >>>>>>> looks as if not every request is included in this number. >>>>>> fuse uses max_background for cases where the total number of >>>>>> simultaneous requests of given type is not limited by some other >>>>>> natural means. AFAIU, these cases are: 1) async processing of direct >>>>>> IO; 2) read-ahead. As an example of "natural" limitation: when >>>>>> userspace process blocks on a sync direct IO read/write, the number of >>>>>> requests fuse consumed is limited by the number of such processes >>>>>> (actually their threads). In contrast, if userspace requests 1GB >>>>>> direct IO read/write, it would be unreasonable to issue 1GB/128K==8192 >>>>>> fuse requests simultaneously. That's where max_background steps in. >>>>> Ah, that makes sense. Are these two cases meant as examples, or is that >>>>> an exhaustive list? Because I would have thought that other cases should >>>>> be writing of cached data (when writeback caching is enabled), and >>>>> asynchronous I/O from userspace...? >>>> I think that's exhaustive list, but I can miss something. >>>> >>>> As for writing of cached data, that definitely doesn't go through >>>> background requests. Here we rely on flusher: fuse will allocate as >>>> many requests as the flusher wants to writeback. >>>> >>>> Buffered AIO READs actually block in submit_io until fully >>>> processed. So it's just another example of "natural" limitation I told >>>> above. >>> Not sure I understand. What is it that's blocking? It can't be the >>> userspace process, because then it wouldn't be asynchronous I/O... >> Surprise! Alas, Linux kernel does NOT process buffered AIO reads in >> async manner. You can verify it yourself by strace-ing a simple >> program looping over io_submit + io_getevents: for direct IO (as >> expected) io_submit returns immediately while io_getevents waits for >> actual IO; in contrast, for buffered IO (surprisingly) io_submit waits >> for actual IO while io_getevents returns immediately. Presumably, >> people are supposed to use mmap-ed read/writes rather than buffered >> AIO. > What about buffered, asynchronous writes when writeback cache is > disabled? It sounds as if io_submit does not block (so userspace could > create an unlimited number), nor can the kernel coalesce them (since > writeback caching is disabled). I've never looked closely at it. Do you have a particular use case or concern? > > Thanks! > -Nikolaus >