Skip to content

Commit d7bdbe3

Browse files
authored
Reduce maximum memory used for vertex sorting (#170)
* Add logging for out-of-memory debugging * Use less memory for sub-sorting * Reduce maximum memory used for vertex sorting
1 parent d359461 commit d7bdbe3

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 2.37.1
2+
3+
* Reduce maximum memory used for vertex sorting
4+
15
# 2.37.0
26

37
* Speed up tile-join overzooming and make it use less memory, by not including empty child tiles in the enumeration

main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2041,7 +2041,7 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
20412041
vertex_readers.push_back(readers[i].vertexfile);
20422042
rewind(readers[i].vertexfile);
20432043
}
2044-
fqsort(vertex_readers, sizeof(vertex), vertexcmp, vertex_out, memsize / 10);
2044+
fqsort(vertex_readers, sizeof(vertex), vertexcmp, vertex_out, memsize / 20);
20452045

20462046
for (size_t i = 0; i < CPUS; i++) {
20472047
if (fclose(readers[i].vertexfile) != 0) {
@@ -2107,7 +2107,7 @@ std::pair<int, metadata> read_input(std::vector<source> &sources, char *fname, i
21072107
rewind(readers[i].nodefile);
21082108
}
21092109

2110-
fqsort(node_readers, sizeof(node), nodecmp, node_out, memsize / 10);
2110+
fqsort(node_readers, sizeof(node), nodecmp, node_out, memsize / 20);
21112111

21122112
for (size_t i = 0; i < CPUS; i++) {
21132113
if (fclose(readers[i].nodefile) != 0) {

sort.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@
44
#include <vector>
55
#include <string>
66

7-
#define MAX_MEMORY (10 * 1024 * 1024)
7+
#define MAX_MEMORY (1024 * 1024 * 1024) // 1 GB
88

99
void fqsort(std::vector<FILE *> &inputs, size_t width, int (*cmp)(const void *, const void *), FILE *out, size_t mem) {
1010
std::string pivot;
1111
FILE *fp1, *fp2;
1212

13+
if (mem > MAX_MEMORY) {
14+
mem = MAX_MEMORY;
15+
}
16+
1317
{
1418
// read some elements into memory to choose a pivot from
1519
//

version.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#ifndef VERSION_HPP
22
#define VERSION_HPP
33

4-
#define VERSION "v2.37.0"
4+
#define VERSION "v2.37.1"
55

66
#endif

0 commit comments

Comments
 (0)