13
13
*
14
14
*
15
15
* IDENTIFICATION
16
- * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.315 2005/09/22 17:32:58 tgl Exp $
16
+ * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.316 2005/10/03 22:52:21 tgl Exp $
17
17
*
18
18
*-------------------------------------------------------------------------
19
19
*/
46
46
#include "utils/inval.h"
47
47
#include "utils/lsyscache.h"
48
48
#include "utils/memutils.h"
49
+ #include "utils/pg_rusage.h"
49
50
#include "utils/relcache.h"
50
51
#include "utils/syscache.h"
51
52
#include "pgstat.h"
@@ -1233,9 +1234,9 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
1233
1234
VTupleLink vtlinks = (VTupleLink ) palloc (100 * sizeof (VTupleLinkData ));
1234
1235
int num_vtlinks = 0 ;
1235
1236
int free_vtlinks = 100 ;
1236
- VacRUsage ru0 ;
1237
+ PGRUsage ru0 ;
1237
1238
1238
- vac_init_rusage (& ru0 );
1239
+ pg_rusage_init (& ru0 );
1239
1240
1240
1241
relname = RelationGetRelationName (onerel );
1241
1242
ereport (elevel ,
@@ -1592,14 +1593,14 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
1592
1593
"Total free space (including removable row versions) is %.0f bytes.\n"
1593
1594
"%u pages are or will become empty, including %u at the end of the table.\n"
1594
1595
"%u pages containing %.0f free bytes are potential move destinations.\n"
1595
- "%s" ,
1596
+ "%s. " ,
1596
1597
nkeep ,
1597
1598
(unsigned long ) min_tlen , (unsigned long ) max_tlen ,
1598
1599
nunused ,
1599
1600
free_space ,
1600
1601
empty_pages , empty_end_pages ,
1601
1602
fraged_pages -> num_pages , usable_free_space ,
1602
- vac_show_rusage (& ru0 ))));
1603
+ pg_rusage_show (& ru0 ))));
1603
1604
}
1604
1605
1605
1606
@@ -1636,9 +1637,9 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
1636
1637
num_fraged_pages ,
1637
1638
vacuumed_pages ;
1638
1639
int keep_tuples = 0 ;
1639
- VacRUsage ru0 ;
1640
+ PGRUsage ru0 ;
1640
1641
1641
- vac_init_rusage (& ru0 );
1642
+ pg_rusage_init (& ru0 );
1642
1643
1643
1644
ExecContext_Init (& ec , onerel );
1644
1645
@@ -2362,8 +2363,8 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
2362
2363
(errmsg ("\"%s\": moved %u row versions, truncated %u to %u pages" ,
2363
2364
RelationGetRelationName (onerel ),
2364
2365
num_moved , nblocks , blkno ),
2365
- errdetail ("%s" ,
2366
- vac_show_rusage (& ru0 ))));
2366
+ errdetail ("%s. " ,
2367
+ pg_rusage_show (& ru0 ))));
2367
2368
2368
2369
/*
2369
2370
* Reflect the motion of system tuples to catalog cache here.
@@ -2950,9 +2951,9 @@ scan_index(Relation indrel, double num_tuples)
2950
2951
{
2951
2952
IndexBulkDeleteResult * stats ;
2952
2953
IndexVacuumCleanupInfo vcinfo ;
2953
- VacRUsage ru0 ;
2954
+ PGRUsage ru0 ;
2954
2955
2955
- vac_init_rusage (& ru0 );
2956
+ pg_rusage_init (& ru0 );
2956
2957
2957
2958
/*
2958
2959
* Even though we're not planning to delete anything, we use the
@@ -2982,9 +2983,9 @@ scan_index(Relation indrel, double num_tuples)
2982
2983
stats -> num_index_tuples ,
2983
2984
stats -> num_pages ),
2984
2985
errdetail ("%u index pages have been deleted, %u are currently reusable.\n"
2985
- "%s" ,
2986
+ "%s. " ,
2986
2987
stats -> pages_deleted , stats -> pages_free ,
2987
- vac_show_rusage (& ru0 ))));
2988
+ pg_rusage_show (& ru0 ))));
2988
2989
2989
2990
/*
2990
2991
* Check for tuple count mismatch. If the index is partial, then it's
@@ -3022,9 +3023,9 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
3022
3023
{
3023
3024
IndexBulkDeleteResult * stats ;
3024
3025
IndexVacuumCleanupInfo vcinfo ;
3025
- VacRUsage ru0 ;
3026
+ PGRUsage ru0 ;
3026
3027
3027
- vac_init_rusage (& ru0 );
3028
+ pg_rusage_init (& ru0 );
3028
3029
3029
3030
/* Do bulk deletion */
3030
3031
stats = index_bulk_delete (indrel , tid_reaped , (void * ) vacpagelist );
@@ -3050,10 +3051,10 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
3050
3051
stats -> num_pages ),
3051
3052
errdetail ("%.0f index row versions were removed.\n"
3052
3053
"%u index pages have been deleted, %u are currently reusable.\n"
3053
- "%s" ,
3054
+ "%s. " ,
3054
3055
stats -> tuples_removed ,
3055
3056
stats -> pages_deleted , stats -> pages_free ,
3056
- vac_show_rusage (& ru0 ))));
3057
+ pg_rusage_show (& ru0 ))));
3057
3058
3058
3059
/*
3059
3060
* Check for tuple count mismatch. If the index is partial, then it's
@@ -3429,60 +3430,6 @@ enough_space(VacPage vacpage, Size len)
3429
3430
}
3430
3431
3431
3432
3432
- /*
3433
- * Initialize usage snapshot.
3434
- */
3435
- void
3436
- vac_init_rusage (VacRUsage * ru0 )
3437
- {
3438
- struct timezone tz ;
3439
-
3440
- getrusage (RUSAGE_SELF , & ru0 -> ru );
3441
- gettimeofday (& ru0 -> tv , & tz );
3442
- }
3443
-
3444
- /*
3445
- * Compute elapsed time since ru0 usage snapshot, and format into
3446
- * a displayable string. Result is in a static string, which is
3447
- * tacky, but no one ever claimed that the Postgres backend is
3448
- * threadable...
3449
- */
3450
- const char *
3451
- vac_show_rusage (VacRUsage * ru0 )
3452
- {
3453
- static char result [100 ];
3454
- VacRUsage ru1 ;
3455
-
3456
- vac_init_rusage (& ru1 );
3457
-
3458
- if (ru1 .tv .tv_usec < ru0 -> tv .tv_usec )
3459
- {
3460
- ru1 .tv .tv_sec -- ;
3461
- ru1 .tv .tv_usec += 1000000 ;
3462
- }
3463
- if (ru1 .ru .ru_stime .tv_usec < ru0 -> ru .ru_stime .tv_usec )
3464
- {
3465
- ru1 .ru .ru_stime .tv_sec -- ;
3466
- ru1 .ru .ru_stime .tv_usec += 1000000 ;
3467
- }
3468
- if (ru1 .ru .ru_utime .tv_usec < ru0 -> ru .ru_utime .tv_usec )
3469
- {
3470
- ru1 .ru .ru_utime .tv_sec -- ;
3471
- ru1 .ru .ru_utime .tv_usec += 1000000 ;
3472
- }
3473
-
3474
- snprintf (result , sizeof (result ),
3475
- "CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec." ,
3476
- (int ) (ru1 .ru .ru_stime .tv_sec - ru0 -> ru .ru_stime .tv_sec ),
3477
- (int ) (ru1 .ru .ru_stime .tv_usec - ru0 -> ru .ru_stime .tv_usec ) / 10000 ,
3478
- (int ) (ru1 .ru .ru_utime .tv_sec - ru0 -> ru .ru_utime .tv_sec ),
3479
- (int ) (ru1 .ru .ru_utime .tv_usec - ru0 -> ru .ru_utime .tv_usec ) / 10000 ,
3480
- (int ) (ru1 .tv .tv_sec - ru0 -> tv .tv_sec ),
3481
- (int ) (ru1 .tv .tv_usec - ru0 -> tv .tv_usec ) / 10000 );
3482
-
3483
- return result ;
3484
- }
3485
-
3486
3433
/*
3487
3434
* vacuum_delay_point --- check for interrupts and cost-based delay.
3488
3435
*
0 commit comments