Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(269)

Side by Side Diff: pkg/barback/lib/src/file_pool.dart

Issue 35923002: Cap the number of FDs used by barback at 32. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | pkg/barback/lib/src/utils.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library barback.file_pool; 5 library barback.file_pool;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'dart:io'; 10 import 'dart:io';
(...skipping 20 matching lines...) Expand all
31 /// time a file finishes being read or a new file is opened. If it fires, that 31 /// time a file finishes being read or a new file is opened. If it fires, that
32 /// indicates that the caller became deadlocked, likely due to files waiting 32 /// indicates that the caller became deadlocked, likely due to files waiting
33 /// for additional files to be read before they could be closed. 33 /// for additional files to be read before they could be closed.
34 Timer _timer; 34 Timer _timer;
35 35
36 /// The number of files currently open in the pool. 36 /// The number of files currently open in the pool.
37 int _openFiles = 0; 37 int _openFiles = 0;
38 38
39 /// The maximum number of file descriptors that the pool will allocate. 39 /// The maximum number of file descriptors that the pool will allocate.
40 /// 40 ///
41 /// Barback may only use half the available file descriptors. 41 /// This is based on empirical tests that indicate that beyond 32, additional
42 int get _maxOpenFiles => (maxFileDescriptors / 2).floor(); 42 /// file reads don't provide substantial additional throughput.
43 final int _maxOpenFiles = 32;
dgrove 2013/10/22 20:31:48 Did you try measuring this on a variety of compute
43 44
44 /// Opens [file] for reading. 45 /// Opens [file] for reading.
45 /// 46 ///
46 /// When the returned stream is listened to, if there are too many files 47 /// When the returned stream is listened to, if there are too many files
47 /// open, this will wait for a previously opened file to be closed and then 48 /// open, this will wait for a previously opened file to be closed and then
48 /// try again. 49 /// try again.
49 Stream<List<int>> openRead(File file) { 50 Stream<List<int>> openRead(File file) {
50 var reader = new _FileReader(this, file); 51 var reader = new _FileReader(this, file);
51 if (_openFiles < _maxOpenFiles) { 52 if (_openFiles < _maxOpenFiles) {
52 _openFiles++; 53 _openFiles++;
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 _onDone(); 176 _onDone();
176 } 177 }
177 178
178 /// Handles the underlying file stream finishing. 179 /// Handles the underlying file stream finishing.
179 void _onDone() { 180 void _onDone() {
180 _subscription = null; 181 _subscription = null;
181 _controller.close(); 182 _controller.close();
182 _pool._startPendingListen(); 183 _pool._startPendingListen();
183 } 184 }
184 } 185 }
OLDNEW
« no previous file with comments | « no previous file | pkg/barback/lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698