2000-11-15 22:56:24 +03:00
|
|
|
# -*- Mode: Makefile -*-
|
|
|
|
#
|
|
|
|
# The contents of this file are subject to the Mozilla Public
|
|
|
|
# License Version 1.1 (the "License"); you may not use this file
|
|
|
|
# except in compliance with the License. You may obtain a copy of
|
|
|
|
# the License at http://www.mozilla.org/MPL/
|
|
|
|
#
|
|
|
|
# Software distributed under the License is distributed on an "AS
|
2002-03-19 07:30:17 +03:00
|
|
|
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
2000-11-15 22:56:24 +03:00
|
|
|
# implied. See the License for the specific language governing
|
|
|
|
# rights and limitations under the License.
|
|
|
|
#
|
|
|
|
# The Original Code is Makefile, released November 13, 2000.
|
|
|
|
#
|
|
|
|
# The Initial Developer of the Original Code is Netscape
|
|
|
|
# Communications Corporation. Portions created by Netscape are
|
|
|
|
# Copyright (C) 2000 Netscape Communications Corporation. All
|
|
|
|
# Rights Reserved.
|
|
|
|
#
|
|
|
|
# Contributor(s):
|
|
|
|
# Chris Waterson <waterson@netscape.com>
|
|
|
|
#
|
|
|
|
# Alternatively, the contents of this file may be used under the
|
|
|
|
# terms of the GNU Public License (the "GPL"), in which case the
|
|
|
|
# provisions of the GPL are applicable instead of those above.
|
|
|
|
# If you wish to allow use of your version of this file only
|
|
|
|
# under the terms of the GPL and not to allow others to use your
|
|
|
|
# version of this file under the MPL, indicate your decision by
|
|
|
|
# deleting the provisions above and replace them with the notice
|
|
|
|
# and other provisions required by the GPL. If you do not delete
|
|
|
|
# the provisions above, a recipient may use your version of this
|
|
|
|
# file under either the MPL or the GPL.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# This makefile will run Mozilla (or the program you specify), observe
|
|
|
|
# the program's memory status using the /proc filesystem, and generate
|
|
|
|
# a ``gross dynamic footprint'' graph using gnuplot.
|
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
#
|
|
|
|
# make MOZILLA_DIR=<mozilla-dir> PROGRAM=<program> URL=<url>
|
|
|
|
#
|
|
|
|
# e.g.,
|
|
|
|
#
|
2000-11-16 04:10:48 +03:00
|
|
|
# make -flinux-gdf.mk \
|
|
|
|
# MOZILLA_DIR=/export2/waterson/seamonkey-opt/mozilla/dist/bin \
|
2000-11-15 22:56:24 +03:00
|
|
|
# PROGRAM=gtkEmbed \
|
2000-11-16 04:10:48 +03:00
|
|
|
# BUSTER_URL="http://localhost/cgi-bin/buster.cgi?refresh=10"
|
2000-11-15 22:56:24 +03:00
|
|
|
#
|
|
|
|
# To use this program, you'll need to:
|
|
|
|
#
|
|
|
|
# 1. Install gnuplot, e.g., using your RedHat distro.
|
|
|
|
# 2. Install the "buster.cgi" script onto a webserver somewhere
|
|
|
|
# 3. Have a mozilla build.
|
|
|
|
#
|
|
|
|
# You can tweak ``linux.gnuplot.in'' to change the graph's output.
|
|
|
|
|
|
|
|
# This script computes a line using linear regression; it's output is
|
|
|
|
# of the form:
|
|
|
|
#
|
|
|
|
# <b1> * x + <b0>
|
|
|
|
#
|
|
|
|
# Where <b1> is the slope and <b0> is the y-intercept.
|
2000-12-23 03:56:08 +03:00
|
|
|
LINEAR_REGRESSION=awk -f linear-regression.awk Skip=5
|
2000-11-15 22:56:24 +03:00
|
|
|
|
2000-12-12 23:00:33 +03:00
|
|
|
INTERVAL=10
|
2000-12-20 21:55:02 +03:00
|
|
|
WATCH=./watch.sh
|
2000-11-15 22:56:24 +03:00
|
|
|
|
|
|
|
MOZILLA_DIR=../../dist/bin
|
2000-11-17 00:51:56 +03:00
|
|
|
PROGRAM=gtkEmbed
|
2000-12-12 23:00:33 +03:00
|
|
|
BUSTER_URL=http://localhost/cgi-bin/buster.cgi?refresh=$(INTERVAL)
|
2000-12-20 21:55:02 +03:00
|
|
|
OUTFILE=linux.dat
|
2000-11-15 22:56:24 +03:00
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
# Top-level target
|
|
|
|
#
|
|
|
|
all: gdf.png
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
# gtkEmbed
|
|
|
|
#
|
|
|
|
|
2001-11-17 08:33:22 +03:00
|
|
|
.INTERMEDIATE: linux.gnuplot vms.dat vmd.dat vmx.dat rss.dat
|
2000-11-15 22:56:24 +03:00
|
|
|
|
|
|
|
# Create a PNG image using the generated ``linux.gnuplot'' script
|
2001-11-17 08:33:22 +03:00
|
|
|
gdf.png: vms.dat vmd.dat vmx.dat rss.dat linux.gnuplot
|
2000-11-15 22:56:24 +03:00
|
|
|
gnuplot linux.gnuplot
|
|
|
|
|
|
|
|
# Generate a ``gnuplot'' script from ``linux.gnuplot.in'', making
|
|
|
|
# appropriate substitutions as necessary.
|
|
|
|
linux.gnuplot: linux.gnuplot.in vms.dat
|
|
|
|
sed -e "s/@PROGRAM@/$(PROGRAM)/" \
|
|
|
|
-e "s/@VMS-LINE@/`$(LINEAR_REGRESSION) vms.dat`/" \
|
|
|
|
-e "s/@GROWTH-RATE@/`$(LINEAR_REGRESSION) vms.dat | awk '{ printf \"%0.1lf\\n\", $$1; }'`/" \
|
2001-11-17 08:33:22 +03:00
|
|
|
-e "s/@BASE-SIZE@/`$(LINEAR_REGRESSION) vms.dat | awk '{ print $$5 + 2000; }'`/" \
|
2000-11-15 22:56:24 +03:00
|
|
|
linux.gnuplot.in > linux.gnuplot
|
|
|
|
|
|
|
|
# Break the raw data file into temporary files that can be processed
|
|
|
|
# by gnuplot directly.
|
2000-12-20 21:55:02 +03:00
|
|
|
vms.dat: $(OUTFILE)
|
2000-12-23 03:56:08 +03:00
|
|
|
awk -f create_dat.awk TYPE=vms $? > $@
|
2000-11-15 22:56:24 +03:00
|
|
|
|
2000-12-20 21:55:02 +03:00
|
|
|
vmd.dat: $(OUTFILE)
|
2000-12-23 03:56:08 +03:00
|
|
|
awk -f create_dat.awk TYPE=vmd $? > $@
|
2000-11-15 22:56:24 +03:00
|
|
|
|
2001-11-17 08:33:22 +03:00
|
|
|
vmx.dat: $(OUTFILE)
|
|
|
|
awk -f create_dat.awk TYPE=vmx $? > $@
|
2000-11-15 22:56:24 +03:00
|
|
|
|
2000-12-20 21:55:02 +03:00
|
|
|
rss.dat: $(OUTFILE)
|
2000-12-23 03:56:08 +03:00
|
|
|
awk -f create_dat.awk TYPE=rss $? > $@
|
2000-11-15 22:56:24 +03:00
|
|
|
|
2000-12-20 21:55:02 +03:00
|
|
|
# Run $(PROGRAM) to produce $(OUTFILE)
|
|
|
|
$(OUTFILE):
|
2000-11-15 22:56:24 +03:00
|
|
|
LD_LIBRARY_PATH=$(MOZILLA_DIR) \
|
|
|
|
MOZILLA_FIVE_HOME=$(MOZILLA_DIR) \
|
2000-12-12 23:00:33 +03:00
|
|
|
$(WATCH) -i $(INTERVAL) -o $@ $(MOZILLA_DIR)/$(PROGRAM) "$(BUSTER_URL)"
|
2000-11-15 22:56:24 +03:00
|
|
|
|
|
|
|
# Clean up the mess.
|
|
|
|
clean:
|
2000-12-20 21:55:02 +03:00
|
|
|
rm -f $(OUTFILE) gdf.png *~
|
2000-11-15 22:56:24 +03:00
|
|
|
|