Author: mav
Date: Fri Sep 25 10:14:39 2015
New Revision: 288215
URL: https://svnweb.freebsd.org/changeset/base/288215

Log:
  Switch I/O time accounting from system time to uptime.
  
  While there, make num_dmas accounted independently of CTL_TIME_IO.

Modified:
  head/sys/cam/ctl/ctl.c
  head/sys/cam/ctl/ctl_backend_block.c
  head/sys/cam/ctl/ctl_backend_ramdisk.c
  head/sys/cam/ctl/ctl_io.h

Modified: head/sys/cam/ctl/ctl.c
==============================================================================
--- head/sys/cam/ctl/ctl.c      Fri Sep 25 09:55:51 2015        (r288214)
+++ head/sys/cam/ctl/ctl.c      Fri Sep 25 10:14:39 2015        (r288215)
@@ -1327,7 +1327,7 @@ ctl_isc_event_handler(ctl_ha_channel cha
                        io->scsiio.tag_type = msg->scsi.tag_type;
 #ifdef CTL_TIME_IO
                        io->io_hdr.start_time = time_uptime;
-                       getbintime(&io->io_hdr.start_bt);
+                       getbinuptime(&io->io_hdr.start_bt);
 #endif /* CTL_TIME_IO */
                        io->scsiio.cdb_len = msg->scsi.cdb_len;
                        memcpy(io->scsiio.cdb, msg->scsi.cdb,
@@ -1366,7 +1366,7 @@ ctl_isc_event_handler(ctl_ha_channel cha
 
                        if (msg->dt.sg_sequence == 0) {
 #ifdef CTL_TIME_IO
-                               getbintime(&io->io_hdr.dma_start_bt);
+                               getbinuptime(&io->io_hdr.dma_start_bt);
 #endif
                                i = msg->dt.kern_sg_entries +
                                    msg->dt.kern_data_len /
@@ -1516,7 +1516,7 @@ ctl_isc_event_handler(ctl_ha_channel cha
                        taskio->tag_type = msg->task.tag_type;
 #ifdef CTL_TIME_IO
                        taskio->io_hdr.start_time = time_uptime;
-                       getbintime(&taskio->io_hdr.start_bt);
+                       getbinuptime(&taskio->io_hdr.start_bt);
 #endif /* CTL_TIME_IO */
                        ctl_run_task((union ctl_io *)taskio);
                        break;
@@ -2775,7 +2775,7 @@ ctl_ioctl(struct cdev *dev, u_long cmd, 
                               __func__, ooa_hdr->fill_len);
                }
 
-               getbintime(&ooa_hdr->cur_bt);
+               getbinuptime(&ooa_hdr->cur_bt);
 
                if (cur_fill_num > ooa_hdr->alloc_num) {
                        ooa_hdr->dropped_num = cur_fill_num -ooa_hdr->alloc_num;
@@ -12654,11 +12654,11 @@ ctl_send_datamove_done(union ctl_io *io,
            msg.scsi.sense_len, M_WAITOK);
 
 #ifdef CTL_TIME_IO
-       getbintime(&cur_bt);
+       getbinuptime(&cur_bt);
        bintime_sub(&cur_bt, &io->io_hdr.dma_start_bt);
        bintime_add(&io->io_hdr.dma_bt, &cur_bt);
-       io->io_hdr.num_dmas++;
 #endif
+       io->io_hdr.num_dmas++;
 }
 
 /*
@@ -13167,12 +13167,12 @@ ctl_process_done(union ctl_io *io)
 #ifdef CTL_TIME_IO
                bintime_add(&lun->stats.ports[targ_port].dma_time[type],
                   &io->io_hdr.dma_bt);
-               lun->stats.ports[targ_port].num_dmas[type] +=
-                   io->io_hdr.num_dmas;
-               getbintime(&cur_bt);
+               getbinuptime(&cur_bt);
                bintime_sub(&cur_bt, &io->io_hdr.start_bt);
                bintime_add(&lun->stats.ports[targ_port].time[type], &cur_bt);
 #endif
+               lun->stats.ports[targ_port].num_dmas[type] +=
+                   io->io_hdr.num_dmas;
        }
 
        /*
@@ -13317,7 +13317,7 @@ ctl_queue(union ctl_io *io)
 
 #ifdef CTL_TIME_IO
        io->io_hdr.start_time = time_uptime;
-       getbintime(&io->io_hdr.start_bt);
+       getbinuptime(&io->io_hdr.start_bt);
 #endif /* CTL_TIME_IO */
 
        /* Map FE-specific LUN ID into global one. */

Modified: head/sys/cam/ctl/ctl_backend_block.c
==============================================================================
--- head/sys/cam/ctl/ctl_backend_block.c        Fri Sep 25 09:55:51 2015        
(r288214)
+++ head/sys/cam/ctl/ctl_backend_block.c        Fri Sep 25 10:14:39 2015        
(r288215)
@@ -405,11 +405,11 @@ ctl_be_block_move_done(union ctl_io *io)
        DPRINTF("entered\n");
 
 #ifdef CTL_TIME_IO
-       getbintime(&cur_bt);
+       getbinuptime(&cur_bt);
        bintime_sub(&cur_bt, &io->io_hdr.dma_start_bt);
        bintime_add(&io->io_hdr.dma_bt, &cur_bt);
+#endif
        io->io_hdr.num_dmas++;
-#endif  
        io->scsiio.kern_rel_offset += io->scsiio.kern_data_len;
 
        /*
@@ -563,8 +563,8 @@ ctl_be_block_biodone(struct bio *bio)
                        ctl_serseq_done(io);
                }
 #ifdef CTL_TIME_IO
-               getbintime(&io->io_hdr.dma_start_bt);
-#endif  
+               getbinuptime(&io->io_hdr.dma_start_bt);
+#endif
                ctl_datamove(io);
        }
 }
@@ -785,8 +785,8 @@ ctl_be_block_dispatch_file(struct ctl_be
                        ctl_serseq_done(io);
                }
 #ifdef CTL_TIME_IO
-               getbintime(&io->io_hdr.dma_start_bt);
-#endif  
+               getbinuptime(&io->io_hdr.dma_start_bt);
+#endif
                ctl_datamove(io);
        }
 }
@@ -956,8 +956,8 @@ ctl_be_block_dispatch_zvol(struct ctl_be
                        ctl_serseq_done(io);
                }
 #ifdef CTL_TIME_IO
-               getbintime(&io->io_hdr.dma_start_bt);
-#endif  
+               getbinuptime(&io->io_hdr.dma_start_bt);
+#endif
                ctl_datamove(io);
        }
 }
@@ -1663,8 +1663,8 @@ ctl_be_block_dispatch(struct ctl_be_bloc
        } else {
                SDT_PROBE(cbb, kernel, write, alloc_done, 0, 0, 0, 0, 0);
 #ifdef CTL_TIME_IO
-               getbintime(&io->io_hdr.dma_start_bt);
-#endif  
+               getbinuptime(&io->io_hdr.dma_start_bt);
+#endif
                ctl_datamove(io);
        }
 }

Modified: head/sys/cam/ctl/ctl_backend_ramdisk.c
==============================================================================
--- head/sys/cam/ctl/ctl_backend_ramdisk.c      Fri Sep 25 09:55:51 2015        
(r288214)
+++ head/sys/cam/ctl/ctl_backend_ramdisk.c      Fri Sep 25 10:14:39 2015        
(r288215)
@@ -235,11 +235,11 @@ ctl_backend_ramdisk_move_done(union ctl_
                CTL_PRIV_BACKEND_LUN].ptr;
        be_lun = (struct ctl_be_ramdisk_lun *)cbe_lun->be_lun;
 #ifdef CTL_TIME_IO
-       getbintime(&cur_bt);
+       getbinuptime(&cur_bt);
        bintime_sub(&cur_bt, &io->io_hdr.dma_start_bt);
        bintime_add(&io->io_hdr.dma_bt, &cur_bt);
-       io->io_hdr.num_dmas++;
 #endif
+       io->io_hdr.num_dmas++;
        if (io->scsiio.kern_sg_entries > 0)
                free(io->scsiio.kern_data_ptr, M_RAMDISK);
        io->scsiio.kern_rel_offset += io->scsiio.kern_data_len;
@@ -339,7 +339,7 @@ ctl_backend_ramdisk_continue(union ctl_i
        io->io_hdr.flags |= CTL_FLAG_ALLOCATED;
        io->io_hdr.ctl_private[CTL_PRIV_BACKEND].integer -= len_filled;
 #ifdef CTL_TIME_IO
-       getbintime(&io->io_hdr.dma_start_bt);
+       getbinuptime(&io->io_hdr.dma_start_bt);
 #endif
        ctl_datamove(io);
 }

Modified: head/sys/cam/ctl/ctl_io.h
==============================================================================
--- head/sys/cam/ctl/ctl_io.h   Fri Sep 25 09:55:51 2015        (r288214)
+++ head/sys/cam/ctl/ctl_io.h   Fri Sep 25 10:14:39 2015        (r288215)
@@ -223,8 +223,8 @@ struct ctl_io_hdr {
        struct bintime    start_bt;     /* Timer start ticks */
        struct bintime    dma_start_bt; /* DMA start ticks */
        struct bintime    dma_bt;       /* DMA total ticks */
-       uint32_t          num_dmas;     /* Number of DMAs */
 #endif /* CTL_TIME_IO */
+       uint32_t          num_dmas;     /* Number of DMAs */
        union ctl_io      *original_sc;
        union ctl_io      *serializing_sc;
        void              *pool;        /* I/O pool */
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to