42
42
* Portions Copyright (c) 1994, Regents of the University of California
43
43
* Portions taken from FreeBSD.
44
44
*
45
- * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.103 2005/12/31 23:50:59 tgl Exp $
45
+ * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.104 2006/01/02 16:45:12 adunstan Exp $
46
46
*
47
47
*-------------------------------------------------------------------------
48
48
*/
@@ -1099,10 +1099,8 @@ test_config_settings(void)
1099
1099
* max_connections value, and the max_fsm_pages setting to be used for
1100
1100
* a given shared_buffers value. The arrays show the settings to try.
1101
1101
*
1102
- * Make sure the trial_bufs[] list includes the MIN_BUFS_FOR_CONNS()
1103
- * value for each trial_conns[] entry, else we may end up setting
1104
- * shared_buffers lower than it could be.
1105
1102
*/
1103
+
1106
1104
#define MIN_BUFS_FOR_CONNS (nconns ) ((nconns) * 10)
1107
1105
#define FSM_FOR_BUFS (nbuffers ) ((nbuffers) > 1000 ? 50 * (nbuffers) : 20000)
1108
1106
@@ -1122,7 +1120,9 @@ test_config_settings(void)
1122
1120
status ,
1123
1121
test_conns ,
1124
1122
test_buffs ,
1125
- test_max_fsm ;
1123
+ test_max_fsm ,
1124
+ ok_buffers = 0 ;
1125
+
1126
1126
1127
1127
printf (_ ("selecting default max_connections ... " ));
1128
1128
fflush (stdout );
@@ -1144,7 +1144,10 @@ test_config_settings(void)
1144
1144
DEVNULL , DEVNULL , SYSTEMQUOTE );
1145
1145
status = system (cmd );
1146
1146
if (status == 0 )
1147
+ {
1148
+ ok_buffers = test_buffs ;
1147
1149
break ;
1150
+ }
1148
1151
}
1149
1152
if (i >= connslen )
1150
1153
i = connslen - 1 ;
@@ -1158,6 +1161,11 @@ test_config_settings(void)
1158
1161
for (i = 0 ; i < bufslen ; i ++ )
1159
1162
{
1160
1163
test_buffs = trial_bufs [i ];
1164
+ if (test_buffs <= ok_buffers )
1165
+ {
1166
+ test_buffs = ok_buffers ;
1167
+ break ;
1168
+ }
1161
1169
test_max_fsm = FSM_FOR_BUFS (test_buffs );
1162
1170
1163
1171
snprintf (cmd , sizeof (cmd ),
@@ -1173,9 +1181,7 @@ test_config_settings(void)
1173
1181
if (status == 0 )
1174
1182
break ;
1175
1183
}
1176
- if (i >= bufslen )
1177
- i = bufslen - 1 ;
1178
- n_buffers = trial_bufs [i ];
1184
+ n_buffers = test_buffs ;
1179
1185
n_fsm_pages = FSM_FOR_BUFS (n_buffers );
1180
1186
1181
1187
printf ("%d/%d\n" , n_buffers , n_fsm_pages );
0 commit comments